设为首页 收藏本站
查看: 678|回复: 0

[经验分享] 生成Weblogic的EJB3的客户端JAR

[复制链接]

尚未签到

发表于 2017-2-16 12:40:07 | 显示全部楼层 |阅读模式
    在访问Weblogic中的EJB3的应用的时候,在客户端经常会有这样一些错误: NoSuchMethodError, CORBA errors,the following Kind of Stack Trace at client end, while invoking the EJB methods:
     java.lang.AssertionError: java.lang.ClassNotFoundException: com.veris.billing.GetCartCredit
     at weblogic.ejb.container.internal.RemoteBusinessIntfGenerator.generateRemoteInterface   (RemoteBusinessIntfGenerator.java:57)
     at weblogic.ejb.container.internal.RemoteBusinessIntfProxy.readObject (RemoteBusinessIntfProxy.java:205)
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
     at java.lang.reflect.Method.invoke(Unknown Source)

  例如:
   http://forums.oracle.com/forums/thread.jspa?threadID=839694&tstart=0

   
 
    下面说明一下如何生成Weblogic使用的EJB3客户端JAR。
    假设原始的EJB3的JAR文件是 “SFSB_EJB3.jar” 位于 “C:\CustomJNDIName\build”目录。其中没有包括部署描述符。
 
  我们使用“weblogic.appc”来生成。
先初始化环境:
%BEA_HOME%\wlserver_10.3\server\bin\setWLSEnv.cmd
再运行:
C:\CustomJNDIName\build> java weblogic.appc -source 1.5 -output OUTPUT -writeInferredDescriptors -verbose SFSB_EJB3.jar

 
打开位于“C:\CustomJNDIName\build” 下OUTPUT目录,其中“META-INF”目录下有默认的EJB3 描述文件,如下:
“ejb-jar.xml”
  
<?xml version=’1.0′ encoding=’UTF-8′?>
<ejb-jar xmlns=”http://java.sun.com/xml/ns/javaee” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” metadata-complete=”true”>
<enterprise-beans>
<session>
<ejb-name>ReplicableSFSBean</ejb-name>
<business-local>sfsb3.ReplicableSFSLocalIntf</business-local>
<business-remote>sfsb3.ReplicableSFSRemoteIntf</business-remote>
<ejb-class>sfsb3.ReplicableSFSBean</ejb-class>
<session-type>Stateful</session-type>
<remove-method>
<bean-method>
<method-name>removeWithRetain</method-name>
<method-params></method-params>
</bean-method>
<retain-if-exception>true</retain-if-exception>
</remove-method>
<remove-method>
<bean-method>
<method-name>removeWithoutRetain</method-name>
<method-params></method-params>
</bean-method>
<retain-if-exception>false</retain-if-exception>
</remove-method>
<transaction-type>Container</transaction-type>
</session>
</enterprise-beans>
<assembly-descriptor></assembly-descriptor>
</ejb-jar>

 


 
默认的 “weblogic-ejb-jar.xml” 如下:

<weblogic-ejb-jar xmlns=”http://www.bea.com/ns/weblogic/weblogic-ejb-jar” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation=”http://www.bea.com/ns/weblogic/weblogic-ejb-jar http://www.bea.com/ns/weblogic/weblogic-ejb-jar/1.0/weblogic-ejb-jar.xsd”>
</weblogic-ejb-jar>

  
现在编辑“ejb-jar.xml” 文件,添加 <ejb-client-jar>My_Ejb3_Client.jar</ejb-client-jar> Tag 到其中. 如下:

<?xml version=’1.0′ encoding=’UTF-8′?>
<ejb-jar xmlns=”http://java.sun.com/xml/ns/javaee” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” metadata-complete=”true”>
<enterprise-beans>
<session>
<ejb-name>ReplicableSFSBean</ejb-name>
<business-local>sfsb3.ReplicableSFSLocalIntf</business-local>
<business-remote>sfsb3.ReplicableSFSRemoteIntf</business-remote>
<ejb-class>sfsb3.ReplicableSFSBean</ejb-class>
<session-type>Stateful</session-type>
<remove-method>
<bean-method>
<method-name>removeWithRetain</method-name>
<method-params></method-params>
</bean-method>
<retain-if-exception>true</retain-if-exception>
</remove-method>
<remove-method>
<bean-method>
<method-name>removeWithoutRetain</method-name>
<method-params></method-params>
</bean-method>
<retain-if-exception>false</retain-if-exception>
</remove-method>
<transaction-type>Container</transaction-type>
</session>
</enterprise-beans>
<assembly-descriptor></assembly-descriptor>
<ejb-client-jar>My_Ejb3_Client.jar</ejb-client-jar>
</ejb-jar>

  
现在编辑 “weblogic-ejb-jar.xml” 文件,添加JNDI名到其中,如下:
  

<weblogic-ejb-jar xmlns=”http://www.bea.com/ns/weblogic/90″ xmlns:j2ee=”http://java.sun.com/xml/ns/j2ee” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation=”http://www.bea.com/ns/weblogic/90 http://www.bea.com/ns/weblogic/90/weblogic-ejb-jar.xsd”>
<weblogic-enterprise-bean>
<ejb-name>ReplicableSFSB</ejb-name>
<stateful-session-descriptor>
<business-interface-jndi-name-map>
<business-remote>sfsb3.ReplicableSFSRemoteIntf </business-remote>
<jndi-name>ReplicableSFSB</jndi-name>
</business-interface-jndi-name-map>
</stateful-session-descriptor>
</weblogic-enterprise-bean>
</weblogic-ejb-jar>

 
现在你可以重新组装你的EJB, 在如下的位置:
  

“C:\CustomJNDIName\build\OUTPUT”.
在DOS的命令窗口进入上面的目录执行“setWLSEnv.cmd”,再执行如下操作:
C:\CustomJNDIName\build\OUTPUT> jar cvf Edited_SFSB_EJB3.jar .

C:\CustomJNDIName\build\OUTPUT> jar cvf Edited_SFSB_EJB3.jar META-INF sfsb3


C:\CustomJNDIName\build\OUTPUT> jar cvf Edited_SFSB_EJB3.jar META-INF sfsb3 _WL_GENERATED
注意:classpath中不要包括. 。
 
     现在“Edited_SFSB_EJB3.jar” 可以用于部署了,但我们还要生成客户端的JAR。因此需要新建一个BUILD文件“buildClientJar.xml”“C:\CustomJNDIName\build\OUTPUT”目录中,内容如下:
  
<project name=”Test-Client_Jar_EJB3″ default=”deploy” basedir=”.”>
<property name=”wl.home.lib” value=”C:\bea103\wlserver_10.3\server\lib” />
<property name=”wls.username” value=”weblogic” />
<property name=”wls.password” value=”weblogic” />
<property name=”wls.hostname” value=”localhost” />
<property name=”wls.port” value=”7001″ />
<property name=”admin.server.name” value=”AdminServer” />
<property name=”deploy.target” value=”AdminServer” />
<property name=”src.dir” value=”src”/>
<property name=”build.dir” value=”build”/>
<property name=”classes.dir” value=”${build.dir}/classes”/>
<property name=”jar.dir” value=”${build.dir}”/>
<property name=”jar.file.name” value=”Edited_SFSB_EJB3″/>
<property name=”deploy.name” value=”Edited_SFSB_EJB3″ />
<property name=”deploy.source” value=”Edited_SFSB_EJB3.jar” />
<path id=”custom.classpath”>
<fileset dir=”${wl.home.lib}”>
<include name=”*.jar”/>
</fileset>
</path>
<taskdef name=”weblogicAppc” classpathref=”custom.classpath” classname=”weblogic.ant.taskdefs.j2ee.Appc”/>
<taskdef name=”wldeploy” classname=”weblogic.ant.taskdefs.management.WLDeploy”/>
<target name=”appc”>
<weblogicAppc source=”${jar.file.name}.jar”
keepgenerated=”true”
verbose=”true”
output=”.”
clientJarOutputDir=”.”
/>
</target>
<target name=”deploy” depends=”appc”>
<wldeploy action=”deploy” name=”${deploy.name}” source=”${deploy.source}” user=”${wls.username}” nostage=”true”
password=”${wls.password}” verbose=”true” adminurl=”t3://${wls.hostname}:${wls.port}” targets=”${deploy.target}” />
</target>
<target name=”redeploy”>
<wldeploy action=”redeploy” name=”${deploy.name}” user=”${wls.username}” nostage=”true” source=”${deploy.source}”
password=”${wls.password}” verbose=”true” adminurl=”t3://${wls.hostname}:${wls.port}” targets=”${deploy.target}” />
</target>
<target name=”undeploy”>
<wldeploy action=”undeploy” name=”${deploy.name}” failonerror=”false” user=”${wls.username}”
password=”${wls.password}” verbose=”true” adminurl=”t3://${wls.hostname}:${wls.port}” targets=”${deploy.target}” />
</target>
</project>

   

 


    C:\CustomJNDIName\build\OUTPUT> ant -buildfile buildClientJar.xml


现在运行上面的 Ant 脚本后,“My_Ejb3_Client.jar” 客户端Jar 已经在当前目录生成,并且 EJB 也已经被部署到服务器了。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-343052-1-1.html 上篇帖子: weblogic 之web服务器部署及相关问题整理 下篇帖子: BEA.WebLogic.Platform.8.1实战指南
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表