生成Weblogic的EJB3的客户端JAR

阅读更多

    在访问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”





ReplicableSFSBean
sfsb3.ReplicableSFSLocalIntf
sfsb3.ReplicableSFSRemoteIntf
sfsb3.ReplicableSFSBean
Stateful


removeWithRetain


true



removeWithoutRetain


false

Container




 

 

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



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

 





ReplicableSFSBean
sfsb3.ReplicableSFSLocalIntf
sfsb3.ReplicableSFSRemoteIntf
sfsb3.ReplicableSFSBean
Stateful


removeWithRetain


true



removeWithoutRetain


false

Container



My_Ejb3_Client.jar

  

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



ReplicableSFSB


sfsb3.ReplicableSFSRemoteIntf 
ReplicableSFSB




 

现在你可以重新组装你的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”目录中,内容如下:




































 

 

 

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

 

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

你可能感兴趣的:(Weblogic,EJB,Bean,Ant,XML)