spring远程调用ejb3异常

2010-08-25 14:51:46 46 [org.jboss.remoting.transport.socket.SocketClientInvoker]-[ERROR] - Got marshalling exception, exiting
java.lang.ClassNotFoundException: javax.ejb.NoSuchEJBException
at org.jboss.remoting.serialization.ClassLoaderUtility.loadClass(ClassLoaderUtility.java:82)
at org.jboss.remoting.loading.RemotingClassLoader.loadClass(RemotingClassLoader.java:76)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at org.jboss.remoting.loading.ObjectInputStreamWithClassLoader.resolveClass(ObjectInputStreamWithClassLoader.java:174)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1575)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1732)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
at org.jboss.remoting.serialization.impl.java.JavaSerializationManager.receiveObjectVersion2_2(JavaSerializationManager.java:239)
at org.jboss.remoting.serialization.impl.java.JavaSerializationManager.receiveObject(JavaSerializationManager.java:133)
at org.jboss.remoting.marshal.serializable.SerializableUnMarshaller.read(SerializableUnMarshaller.java:120)
at org.jboss.remoting.transport.socket.MicroSocketClientInvoker.versionedRead(MicroSocketClientInvoker.java:943)
at org.jboss.remoting.transport.socket.MicroSocketClientInvoker.transport(MicroSocketClientInvoker.java:584)
at org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:122)
at org.jboss.remoting.Client.invoke(Client.java:1550)
at org.jboss.remoting.Client.invoke(Client.java:530)
at org.jboss.aspects.remoting.InvokeRemoteInterceptor.invoke(InvokeRemoteInterceptor.java:62)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.aspects.tx.ClientTxPropagationInterceptor.invoke(ClientTxPropagationInterceptor.java:61)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.aspects.security.SecurityClientInterceptor.invoke(SecurityClientInterceptor.java:53)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:72)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.ejb3.stateful.StatefulRemoteProxy.invoke(StatefulRemoteProxy.java:135)
at $Proxy11.say(Unknown Source)


这个异常是由于本地服务器的远程对象没有与远程ejb服务器的对象同步,重启下本地服务就行了。


如果把ejb部署在weblogic服务器上,那么你在远程调用的时候就很有可能出现以下异常:
java.lang.NoClassDefFoundError: weblogic/utils/NestedException
出现这个异常是因为项目中缺少了weblogic的lib,需要加入wlfullclient.jar,但是在..\wlserver_10.3\server\lib下找不到这个jar包,所以需要重新编译出jar包来,我通过ant来编译:build.xml

<?xml version="1.0"?>
<project name="JarBuilder" default="run">
<property name="bea.home" value="d:/bea"/>
<property name="wl.home" value="${bea.home}/wlserver_10.3"/>

<path id="main.class.path">
<pathelement path="${bea.home}/modules/com.bea.core.utils_1.4.0.0.jar"/>
<pathelement path="${bea.home}/modules/com.bea.core.jarbuilder_1.2.0.0.jar"/>
<pathelement path="${java.class.path}"/>
</path>

<target name="run">
<echo message="***** This ANT Script should run from inside the ${wl.home}/server/lib *****" />
<echo message="***** ********* ********* *****" />
<java classname="com.bea.jarbuilder.JarBuilder">
<classpath refid="main.class.path"/>
<jvmarg value="-d ${wl.home}/server/lib -jar wljarbuilder.jar"/>
</java>
</target>
</project>


其中bea.home和wl.home改成你对应的weblogic目录,然后把build.xml放到wl.home\server\lib下进行ant编译,编译成功,你就可以在该目录下找到wlfullclient.jar包了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值