ejb3+ejb 部署weblogic 10-ejb 部署weblogic 10部署ejb3后,怎么调用本地session bean

职友集:让就业决策更聪明基于weblogic 的EJB 学习笔记-JSP教程,资料/其它-虚拟主机资讯|虚拟主机动态
产品服务快速通道
----------------
==域名注册==
英文域名注册
中文域名注册
==网站推广==
==虚拟主机==
----------------
双线路虚拟主机
基本型虚拟主机
商用型虚拟主机
论坛型虚拟主机
功能型虚拟主机
Vip合租虚拟主机
虚拟主机性能对比
虚拟主机免费试用
机房速度测试
----------------
==租用托管==
服务器租用
----------------
==企业邮局==
购买企业邮局
----------------
==付款方式==
----------------
==联系我们==
您当前位置:->-> ->
基于weblogic 的EJB 学习笔记-JSP教程,资料/其它
作者:网友供稿
  西部数码-全国虚拟主机10强!20余项管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:&
ejb 学习笔记
1、ejb 基础知识
(1) 无状态会话bean
&&&&不保存客户机的会话状态
&&&&优点:使用小量的实例即可满足大量的客户。每个实例都没有标识,相互之间是等价的。
&&&&等绲奈拮刺峄bean:&&多次和一次调用的结果和效应相同。
&&&&&&&&在集群中可以负载均衡 a 机器失败,可以在b机器上重试
&&&&非等绲奈拮刺峄bean: 如:计数器
&&&&&&&&不能自动因故障而进行切换。
(2) 有状态会话bean
&&&&保存客户机的会话状态
&&&&特点: 在有会话状态会话的bean例子中,出纳员的数量等于活动的顾客的数量,这可以简化编程模式
&&&&&&&&weblogic 通过内存复制技术 在集群中进行负载均衡
&&&&&&&&&&&&内存复制技术: 每个有会话状态的bean实例都将存储在两个服务器的内存中,一个服务器作为主服务器,另一个作为辅助服务器。
&&&&&&&&&&&&&&&&&&&&&&&&&如果主失败,辅助变为主,然后自动选择别的可用的服务器作为辅助。
&&&&遗憾: 很难在servlet 和jsp中用好有状态会话bean。可能会发生并发现象,产生remoteexception
&&&&&&&&&&weblogic 的&allow-concurrent-calls& 可以封锁任何并发的调用。
&&&&同步: 可以有选择地实现 javax.ejb.sessionsynchronization接口
&&&&&&&&&&afeterbegin()&&&&&&&&&//进入事务时
&&&&&&&&&&beforecompletion()&&&&//提交事务前,用于提交前把缓存的数据写到数据库中.
&&&&&&&&&&aftercompletion()&&&&&//提交事务后,用于释放共享资源或者更新事务提交和终止方面的统计信息.
&&&&&会话bean通过其 sessioncontext 对象中的 getusertransaction() 方法,取得对usertransaction的应用
&&&&&通常 sessioncontext 被存放在成员变量中
&&&&&** 记住是在调用ejb.create()方法前调用 setusertransaction() 方法
&&&&&利用对 usertransaction 的引用会话可以使用 begin() 、commit()、rollback() 方法界定一个事务.
&&&&&&&&&&&
(3) 实体 bean:
&&&&它有一个主健作为唯一的标识符
&&&&组成部分: 由本地接口、远程接口、bean类、主健类和配置描述器组成。
&&&&&&&&&&&&&本地接口:
&&&&&&&&&&&&&&&&&扩展了javax.ejb.ejbhome接口,包括create()、remove()、finder 和home等方法
&&&&&&&&&&&&&&&&&1)create()方法调用bean类中的ejbcreate()方法。相当于数据的insert 方法。
&&&&&&&&&&&&&&&&&2)remove()方法相当于数据库的delete操作。
&&&&&&&&&&&&&&&&&3)finder()方法,使客户能够查询和接收满足查询条件的实体bean的引用。每个实体bean的本地接口中都必须
&&&&&&&&&&&&&&&&&&&有一个findbyprimarykey() 方法
&&&&&&&&&&&&&&&&&4)home 方法,类似于无状态会话bean。
&&&&&&&&&&&&&主健类:
&&&&&&&&&&&&&&&&&实体bean必须包括一个主健类,主健类用于标识实体bean实例,而且实体bean数据类型必须是唯一的。
&&&&&&&&&&&&&&&&&主健类可以是java的基本类型string integer 也可以是用户自定义的。
&&&&&&&&&&&&&&&&&也可以是多个字段的主健的复合主健。
&&&&&&&&&&&&&bean 类和bean的上下文环境:
&&&&&&&&&&&&&&&&&实现javax.ejb.ejbobject 接口,其中包含业务方法的语法格式定义.
&&&&&&&&&&&&&&&&&bean 类实现了javax.ejb.entitybean接口,同javax.ejb.sessionbean接口一样,entitybean 接口包含了ejb
&&&&&&&&&&&&&&&&&容器调用bean实例的语法格式.
&&&&&&&&&&&&&&&&&在bean的构造器执行之后,立即调用setentitycontext() 方法,同时把bean实例的entitycontext 传递给它.
&&&&&&&&&&&&&&&&&bean类实现了home方法和远程接口中的业务方法,home方法是针对匿名实例的方法不应使用有关的主健值.
&&&&分为:
&&&&容器管理持久性(container-managerd persistence)cmp
&&&&&&&&特点: ejb 容器自动生成,用于把实体bean的数据写入到数据库中。
&&&&&&&&优点: bean作者可以避免编写实体bean与关系数据库数据访问方面的代码。cmp将自动处理这一过程。
&&&&&&&&个性:&&每一个cmp 实体bean 都有一组容器管理的字段,这些字段存储在数据库,并可从中加载.通常,每个容器管理的字段都对应于
&&&&&&&&&&&&&&关系数据库中的一个列.
&&&&&&&&&&&&&&容器管理的每个字段必须在ejb-jar.xml中定义,这使容器能够把容器管理的字段与bean类中的set和get方法进行匹配比较.
&&&&&&&&&&&&&&另外,bean作者可以增加另外一个cmp配置描述文件 weblogic-cmp-rdbms.xml,其中包含数据库表名和每个容器管理的字
&&&&&&&&&&&&&&段和相应的数据列的映射.
&&&&bean管理持久性(bean-managerd persistence ) bmp
&&&&&&&&特点: 在bmp实体中,bean作者需要自己编写数据库访问代码,也就是编写jdbc代码,插入、删除和查询数据库中的实体bean数据。
&&&&&&&&优点: 可以让bean的作者完全灵活的处理实体bean的持久性数据,因为作者需要写数据访问的代码,他几乎可以使用任何持久性存
&&&&&&&&&&&&&&储方式ejb2.0 cmp提供实体bean之间的标准关系映射,使容器能自动管理业务对象之间的交互。
&&&&&&&&&&&&&&cmp拥有更多的访问控制,因此cmp比bmp有较好的性能。
(4) 消息 bean
&&&&把jms 和ejb 成功结合在一起,集成的结果
&&&&特点:客户机不需要调用消息bean 相反: 客户机只需要发一个消息给jms目的。
&&&&在消息到达以后,消息bean的onmessage()方法将被调用,以处理这个消息。
&&&&消息bean用于在服务器中执行异步操作。
2。ejb 组成
(1)远程接口
&&&&public interface helloword extents ejbobject
&&&&&&&&//ejbobject 接口方法
&&&&&&&&&ejbhome getejbhome() th
&&&&&&&&object getprimarykey() th
&&&&&&&&void remove() throws remoteexception,
&&&&&&&&handle gethandle() th
&&&&&&&&boolean isidentical(ejbobject ejbobject) th
(2)本地接口
&&&&本地接口是ejb工厂,客户机可以使用本地接口创建、找出和删除ejb实例。只需写本地接口中的方法的语法调用格式
&&&&public class helloworldhome extends ejbhome
&&&&&&&&//ejbhome 接口方法
&&&&&&&&void remove(handle handle) throws remoteexception,
&&&&&&&&void remove(object o) throws remoteexception,
&&&&&&&&ejbmetadata getejbmetadata() th
&&&&&&&&homehandle gethomehandle() th
&&&&&&&&// home
&&&&&&&&public helloworld create() throws createexception,
(3)bean 类
&&&&public class helloworldbean implements sessionbean
&&&&&&&&// sessionbean 中的方法
&&&&&&&&public void setsessioncontext(sessioncontext sessioncontext)
&&&&&&&&/**调用次方法会话结束*/
&&&&&&&&public void ejbremove()
&&&&&&&&&&&&//ejb通过待命和活动的机制,管理一组正在工作的有状态会话bean实例
&&&&&&&&/**活动*/
&&&&&&&&public void ejbactivate()
&&&&&&&&/**待命*/
&&&&&&&&public void ejbpassivate()
&&&&&&&&// bean类
&&&&&&&&// 每个home 的create 方法对应一个ejbcreate()方法
&&&&&&&&// 有会话状态有很多不同版本的create()方法。而create 方法必须有ejbcreate()方法与之一一对应
&&&&&&&&public void ejbcreate()
&&&&不要在ejb类中类中实现远程接口
3. ejb 配置描述器
(1)ejb-jar.xml
&ejb-jar& (注释)&&
&&&&&enterprise-beans&&&&&&
&&&&&&&&&session&
&&&&&&&&&&&&&ejb-name&helloworld(ejbname)&/ejb-name&
&&&&&&&&&&&&&home&com.dhc.helloworld.helloworldhome(本地接口类)&/home&
&&&&&&&&&&&&&remote&com.dhc.helloworld.helloworld(远程接口类)&/remote&
&&&&&&&&&&&&&ejb-class&com.dhc.helloworld.helloworldbean(bean类)&/ejb-class&
&&&&&&&&&&&&&session-type&stateless(无状态会话)&/session-type&
&&&&&&&&&&&&&transaction-type&bean(bean管理的事务)&/transaction-type&&&&&&
&&&&&&&&&/session&
&&&&&/enterprise-beans&
&&&&&container-transaction&
&&&&&&&&&method&
&&&&&&&&&&&&&ejb-name&shoppingcartejb&/ejb-name&
&&&&&&&&&&&&&method-name&*(说明shoppingcartejb的默认事务属性指定为required)&/method-name&
&&&&&&&&&/method&
&&&&&&&&&trans-attribute&required(容器管理的事务使用的属性 nerver、notsupported
&&&&&&&&、supports、mandatory、required、requirednew)&/trans-attribute&
&&&&&/container-transaction&
&/ejb-jar&
(2)weblogic-ejb-jar.xml (注释)
&weblogic-ejb-jar&&&&
&&&&&weblogic-enterprise-bean&
&&&&&&&&&ejb-name&helloworld(ejb名称)&/ejb-name&
&&&&&&&&&jndi-name&helloworldejb(jndi名称)&/jndi-name&
&&&&&&&&&max-bean-in-freepool&10(限制不会有超过10个无状态会话bean并发运行)&/max-bean-in-freepool&
&&&&&&&&&max-bean-in-cache&10(放到内存缓存中的有状态会话bean的最大数量)&/max-bean-in-cache&
&&&&&/weblogic-enterprise-bean&
&/weblogic-ejb-jar&&&
4 . 建立ejb 档案文件
com/dhc/helloworld/(package)
com/dhc/helloworld/helloworld(远程接口)
com/dhc/helloworld/helloworldhome(本地接口)
com/dhc/helloworld/helloworldbean(bean类)
meta-inf/ejb-jar.xml(配置描述器)
meta-inf/weblogic-ejb-jar.xml(weblogic服务器配置描述器)
说明: meta-inf 必须为大写
5 . 容器管理的事务
nerver :&&&&&&&&不参与事务,如果参与产生remoteexception
notsupported:&&&不能参与
supports:&&&&&&&如果调用者正在参与事务,相应的ejb调用也可以参与事务,否则不能
mandatory&&&&&&&如果调用者有一个事务,相应的ejb可以参与事务,否则,transactionrequiredexception
required&&&&&&&&如果调用者有一个事务,相应的ejb可以参与事务,否则,容器将在调用相应的ejb之前,开始一个事务.
&&&&&&&&&&&&&&&&当方法调用完成以后,即提交该事务.
requiresnew&&&&&在调用相应的ejb之前,开始一个新的事务,当方法调用返回时,即提交这个事务.
6、ejb 引用
在ejb-jar.xml
&&&&&description& an ejb reference to the widget ejb(描述)&/description&
&&&&&ejb-ref-name&ejb/widgetejb&/ejb-ref-name&
&&&&&ejb-ref-type&session&/ejb-ref-type&
&&&&&home&com.dhc.widgethome&/home&
&&&&&remote&com.dhc.widget&/remote&
&/ejb-ref&
在 weblogic-ejb-jar.xml
&ejb-reference-description&
&&&&&ejb-ref-name&ejb/widgeejb&/ejb-ref-name&
&&&&&jndi-name&deployedwidge&/jndi-name&
&/ejb-reference-description&
content ctx = new initialcontent();
object h = ctx.lookup(&java:/comp/env/ejb&);&&&&//环境变量是只读的,而且是当前ejb的本地变量.
widgethome home = (widgethome)portableremoteobject.narrow(h,widgehome.class);
7. 资源管理器的引用
定义资源管理的引用
例子: 建立 jdbc、dbpool与jdbc数据源的映射
在ejb-jar.xml
&resource-ref&
&&&&&description&(描述)&/description&
&&&&&res-ref-name&jdbc/bdpool&/res-ref-name&
&&&&&res-type&javax.sql.datasource&/res-type&
&&&&&res-auth&container&/res-auth&
&/resource-ref&
在 weblogic-ejb-jar.xml
&resource-description&
&&&&&res-ref-name&jdbc/dbpool&/res-ref-name&
&&&&&jndi-name&dbpool&/jndi-name&
&/resource-description&
config.xml
&jdbctxdatasource
&&&&name=&dbpool&
&&&&targets=&myserver&
&&&&jddiname=&dbpool& (jndi名称)
&&&&poolname =&developmentpool&
引用的优点
我们用大量的映射和配置,才建立了资源管理器的引用,但是还是很值得的。
以为便于部署人员重新配置应用而不需要修改实际的bean类代码。甚至也不需要修改ejb的配置描述器
java bean 代码
content ctx = new initialcontent();
datasource datasource = (datasource)ctx.lookup(&java:/comp/env/jdbc/dbpool&);
8 . 句柄: 作为一个串行化的对象,句柄中封装了足够的信息,以便重建对ejbobject的引用。
句柄可用于在两个相互合作的进程中传递ejbobject的引用。接受进程即可从句柄中取得ejbobject的引用。
为了取得句柄,可以调用ejbobject接口的gethandle()方法,返回一个handle实例
为了重建ejbobject 引用。可以使用handle 接口的getejbobject()方法。
&&&&helloworld hw = home.create();
&&&&javax.ejb.handle handle = hw.gethandle();
&&&&helloworld helloworld = (helloworld)portableremoteobject.narrow(handle.getejbobject(),helloworld.class);
homehandle:
&&&&类似handle ,但不能用于引用ejbobject
&&&&homehandle 包含足够的信息,可以重建ejbhome()的引用。
&&&&差异:
&&&&&&&&是调用 gethomehandle()方法 和getejbhome()方法
例子片断:
&&&&&content ctx = new initialcontext();
&&&&&object h = ctx.lookup(&helloworldejb&);
&&&&&helloworldhome home = (helloworldhome)portableremoteobject.narrow(h,helloworldhome.class);
&&&&&homehandle homehandle = home.gethomehandle();
&&&&&object nh = homehandle.getejbhome();
&&&&&helloworldhome newhomereference = (helloworldhome)portableremoteobject.narrow(nh,helloworldhome.class);
&&&&&他们可以自动的存储重建引用所需的信息
9.使用事务的技巧:
(1) 一个事务不要涉及太多的操作.
(2) 容器管理和bean管理的事务
&&&&事务既耗费应用服务器中的资源,又耗费数据库资源,所以事务越短越好.
&&&&尽量使用容器管理事务而不要采用bean管理事务的方式.
(3) ejb遇到错误,需要强制事务回滚. 使用ejbobject.setrollbackonly();
(4) 不能让事务涉及web层和表示逻辑
(5) 企业应用中不应当选用supports 事务属性,因为只有调用者开始一个事务后,ejb才能在事务中运行.
文章整理:西部数码--专业提供、服务
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
文章页数:&
??????????
??????????
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
版权所有 西部数码()
CopyRight (c) 2002~ all right reserved.
公司地址:四川省成都市金牛区一环路北一段99号环球广场24楼 邮编:610031
电话总机:028-08 38
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028- 财务QQ:
售前咨询QQ:2182518
售后服务QQ:ejb3+weblogic-weblogic部署ejb3后,怎么调用本地session bean?
作者:用户
浏览:384 次
weblogic部署ejb3后,怎么调用本地sessionbean?如题,定义了一个接口为local接口,,使用的是ejb3。@LocalinterfaceHelloWord(){publicsay(
weblogic部署ejb3后,怎么调用本地session bean?
如题,定义了一个接口为local接口,,使用的是ejb3。
interface HelloWord(){
public say();
weblogic部署这个local接口后。要怎么调用这儿local接口?
ps:我部署了一个远程接口,用lookup()方法可以调用成功。
但是这个local接口怎么也调不通,在weblogic控制台中也看不到这个local EJB的jndi(远程的那个EJB可以看到)。
EJB和调用EJB的项目都是在同一个weblogic中的
请问,可以用lookup掉用这个local吗,lookup方法应该怎么传参数?
【云栖快讯】红轴机械键盘、无线鼠标等753个大奖,先到先得,云栖社区首届博主招募大赛9月21日-11月20日限时开启,为你再添一个高端技术交流场所&&
稳定可靠、可弹性伸缩的在线数据库服务,全球最受欢迎的开源数据库之一
6款热门基础云产品6个月免费体验;2款产品1年体验;1款产品2年体验
弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率
开发者常用软件,超百款实用软件一站式提供博客分类:
weblogic部署ejb可以通过jar、ear方式。
两种部署ejb方式的步骤都是一致的
1、启动domain,并登录控制台
2、选择“部署”-》“安装”,如下图所示:
3、选择ejb程序(这里以jar方式为例),选择ejb-service.jar,如图所示:
4、选择部署的目标,注意这里选择的是AdminServer、cluster,如图所示:
【注意:这里选中AdminServer只是方便从jndi树中查看ejb服务,真正提供ejb服务的还是server1、server2】
5、继续下一步,直到完成即可。部署成功之后,如图所示:
可以看到类型为EJB,状态为活动。至此ejb应用已经部署成功,如何查看ejb的jndi呢?往下看。
查看weblogic的jndi树:
选择“服务器”-》“AdminServer”-》“配置”-》“一般信息”-》“查看JNDI树”,如图所示:
点击上图的链接,打开新的页面,展现jndi的树结构,如下图所示:
我们在jndi的树结构中找到ejb应用程序的jndi(例子中有两个remote的ejb,分别是SessionEJB、SwapEJBBean
客户端调用时,需要使用右栏的“绑定名”作为jndi的名称,代码如下:
package example.
import java.util.P
import javax.naming.C
import javax.naming.InitialC
public class TestWebLogicEJB {
public static void main(String[] args) throws Exception {
Properties properties=new Properties();
properties.setProperty(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
properties.setProperty(Context.PROVIDER_URL,"t3://localhost:7101,localhost:7102");
properties.setProperty(Context.SECURITY_PRINCIPAL,"weblogic");
properties.setProperty(Context.SECURITY_CREDENTIALS,"");
Context context = new InitialContext(properties);
SessionEJB session = (SessionEJB) context.lookup("SessionEJB#example.ejb.SessionEJB");
session.addUser("test1");
System.out.println(session.getUsers());
session.addUser("test2");
System.out.println(session.getUsers());
SwapEJB swap = (SwapEJB)context.lookup("SwapEJBBean#example.ejb.SwapEJB");
System.out.println(swap.invoke("test"));
上面代码分别调用了两个remote的ejb服务。
【注意点:
1、Context.PROVIDER_URL,这里是指定了集群两个server的ip、port来负载ejb应用
2、context.lookup,lookup需要制定jndi的名称,这里使用前面介绍的jndi绑定名

weblogic11g是支持ejb3的,可以直接使用注解来定义ejb服务了。而不像以前还要创建weblogic-ejb-jar.xml文件来定义。
开发ejb3的程序步骤如下:
1、定义接口(这里不是必须):
package example.
public interface SwapEJB {
public abstract String invoke(String request);
2、定义ejb的bean(这里以stateless为例):
package example.
import javax.ejb.R
import javax.ejb.S
@Stateless(mappedName = "SwapEJBBean")
@Remote({SwapEJB.class})
public class SwapEJBBean implements SwapEJB {
public String invoke(String request) {
return "remote response=" +
部署到weblogic下面,需要指定mappedName
这个简单的ejb例子已放在附件中,有兴趣可以尝试打成jar包部署试试。
ejb以jar的方式部署存在一些弊端,如果依赖很多第三方库,就需要增加到weblogic的classpath中。有两种方式(建议第一种方式):
1、weblogic11g对于domain依赖的第三方库,可以直接添加到domain下面的lib文件夹中。如我的lib位置:
D:\server\weblogic11\user_projects\domains\springside3\lib
weblogic启动的时候,会把这个文件夹下面的jar追加到启动脚本的classpath后面
2、手动编辑startWebLogic.cmd,增加第三方库的jar路径到classpath中
如果以ear部署就方便许多,附件已贴上ear的包。部署方式没有任何差别,这里不介绍了。
(489.9 KB)
下载次数: 158
(1013.8 KB)
下载次数: 133
Dead_knight
浏览: 930505 次
来自: 杭州
浏览量:180680
浏览量:30145
浏览量:168271
写的太棒了,受不了
厉害了 困扰我大半个月的问题解决了
双向的时候谷歌提示“不接受您的登录证书,或者您可能没有提供登录 ...
不成功啊。启动有问题 &Security& &lt ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'京 东 价:
[定价:¥]
PLUS会员专享价
您购买此商品可享受专属价
增值业务:
重  量:
搭配赠品:
服务支持:
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
JavaEE实用开发指南:基于Weblogic+EJB3+Struts2+Hibernate+Spring
商品介绍加载中...
扫一扫,精彩好书免费看
京东商城向您保证所售商品均为正品行货,京东自营商品开具机打发票或电子发票。
凭质保证书及京东商城发票,可享受全国联保服务(奢侈品、钟表除外;奢侈品、钟表由京东联系保修,享受法定三包售后服务),与您亲临商场选购的商品享受相同的质量保证。京东商城还为您提供具有竞争力的商品价格和,请您放心购买!
注:因厂家会在没有任何提前通知的情况下更改产品包装、产地或者一些附件,本司不能确保客户收到的货物与商城图片、产地、附件说明完全一致。只能确保为原厂正货!并且保证与当时市场上同样主流新品一致。若本商城没有及时更新,请大家谅解!
权利声明:京东上的所有商品信息、客户评价、商品咨询、网友讨论等内容,是京东重要的经营资源,未经许可,禁止非法转载使用。
注:本站商品信息均来自于合作方,其真实性、准确性和合法性由信息拥有者(合作方)负责。本站不提供任何保证,并不承担任何法律责任。
印刷版次不同,印刷时间和版次以实物为准。
价格说明:
京东价:京东价为商品的销售价,是您最终决定是否购买商品的依据。
划线价:商品展示的划横线价格为参考价,该价格可能是品牌专柜标价、商品吊牌价或由品牌供应商提供的正品零售价(如厂商指导价、建议零售价等)或该商品在京东平台上曾经展示过的销售价;由于地区、时间的差异性和市场行情波动,品牌专柜标价、商品吊牌价等可能会与您购物时展示的不一致,该价格仅供您参考。
折扣:如无特殊说明,折扣指销售商在原价、或划线价(如品牌专柜标价、商品吊牌价、厂商指导价、厂商建议零售价)等某一价格基础上计算出的优惠比例或优惠金额;如有疑问,您可在购买前联系销售商进行咨询。
异常问题:商品促销信息以商品详情页“促销”栏中的信息为准;商品的具体售价以订单结算页价格为准;如您发现活动商品售价或促销信息有异常,建议购买前先联系销售商咨询。
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
浏览了该商品的用户还浏览了
加载中,请稍候...
七日畅销榜
新书热卖榜
iframe(src='///ns.html?id=GTM-T947SH', height='0', width='0', style='display: visibility:')

我要回帖

更多关于 weblogic 调用ejb2.0 的文章

 

随机推荐