简体   繁体   English

weblogic上下文查找错误:java.rmi.UnmarshalException:错误解组参数

[英]weblogic context lookup error : java.rmi.UnmarshalException: error unmarshalling arguments

We are facing an issue in our production env. 我们在生产环境中遇到了一个问题。 We have searched the net high and low and we were not able to come up with any answers. 我们搜索了网络的高低,我们无法得出任何答案。 This error(stacktrace below) occurs when an ejb lookup is made from managed server 1 to manager server 2. Virtual ip is used for the lookup. 当从受管服务器1到管理服务器2进行ejb查找时,会发生此错误(下面的堆栈跟踪)。虚拟IP用于查找。 It occurs intermittently and at random intervals. 它间歇地以随机间隔发生。 We are not able to identify any pattern and If the ejb call is attempted two or three times, it gets through successfully. 我们无法识别任何模式,如果ejb调用尝试了两到三次,它就会成功通过。

Env details : server : weblogic 10.0 MP1 running on java 1.5 os : solaris Env详细信息:服务器:weblogic 10.0 MP1在java 1.5 os:solaris上运行

Pls revert if any other details are required. 如果需要任何其他细节,请恢复。

Source used for lookup : 用于查找的源:

private TreControlRemote getController() throws Exception {
    Context context = null;
    Properties p = new Properties();
    TreControlHome treHome = null;
    TreControlRemote remote = null;
    ConfigurationLoader lAppLoader = null;
    try {
        mLog.debug("Entering");
        lAppLoader = PropertiesFileLoader.getInstance("context.properties");
        p.put(Context.INITIAL_CONTEXT_FACTORY, lAppLoader.getValue("INITIAL_CONTEXT_FACTORY"));
        p.put(Context.PROVIDER_URL, lAppLoader.getValue("PROVIDER_URL"));
        context = new InitialContext(p);
        mLog.debug("context : " + context.getEnvironment());
        remote = null;
        treHome = (TreControlHome) context.lookup("CONTROL");
        mLog.debug("Object --->>>>" + treHome);
        remote = (TreControlRemote) treHome.create();
        mLog.debug("Leaving");
    } catch (Exception ex) {
        mLog.fatal("Exception while getting remote", ex);
        ex.printStackTrace();
        throw ex;
    } finally {
        lAppLoader = null;
    }
    return remote;
}

The url is a virtual ip pointing to managed server 2 and it contains a ejb with jndi "CONTROL". url是指向托管服务器2的虚拟IP,它包含带有jndi“CONTROL”的ejb。 The problem is that it successful on certain occassions and fails randomly with the error: 问题是它在某些场合成功并随机失败并出现错误:

stack trace of the error : 堆栈错误的痕迹:

*javax.naming.CommunicationException [Root exception is java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.io.StreamCorruptedException]
at weblogic.jndi.internal.ExceptionTranslator.toNamingException(ExceptionTranslator.java:74)
at weblogic.jndi.internal.WLContextImpl.translateException(WLContextImpl.java:426)
at weblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:382)
at weblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:367)
at javax.naming.InitialContext.lookup(InitialContext.java:351)
```````````````````````````````````````````````````````````````````
Caused by: java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.io.StreamCorruptedException
at weblogic.rjvm.ResponseImpl.unmarshalReturn(ResponseImpl.java:221)
at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:338)
at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:252)
at weblogic.jndi.internal.ServerNamingNode_1001_WLStub.lookup(Unknown Source)
at weblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:379)
... 33 more
Caused by: java.io.StreamCorruptedException
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1332)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348)
at weblogic.utils.io.ChunkedObjectInputStream.readObject(ChunkedObjectInputStream.java:195)
at weblogic.rjvm.MsgAbbrevInputStream.readObject(MsgAbbrevInputStream.java:565)
at weblogic.utils.io.ChunkedObjectInputStream.readObject(ChunkedObjectInputStream.java:191)
at weblogic.jndi.internal.RootNamingNode_WLSkel.invoke(Unknown Source)
at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:589)
at weblogic.rmi.cluster.ClusterableServerRef.invoke(ClusterableServerRef.java:224)
at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:479)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
at weblogic.security.service.SecurityManager.runAs(Unknown Source)
at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:475)
at weblogic.rmi.internal.BasicServerRef.access$300(BasicServerRef.java:59)
at weblogic.rmi.internal.BasicServerRef$BasicExecuteRequest.run(BasicServerRef.java:1016)
... 2 more*

Obtained the below mentioned stacktrace from the weblogic log. 从weblogic日志中获取下面提到的stacktrace。 Could this error be related to our problem mentioned above? 这个错误可能与我们上面提到的问题有关吗?

*####<Aug 25, 2009 2:11:04 AM BST> <Info> <RJVM> <pkssv049> <M1AP4> <ACTIVE ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <1251162664181> <BEA-000513> <Failure in heartbeat trigger for RJVM: 5433424963141690658S:169.93.73.0:10040,10040,-1,-1,-1,-1,-1:pkssv049.***.net:10240,pkssv049.***.net:10241,pkssv050.***.net:10240,pkssv050.***.net:10241:LIQP1_LMSDomain:M1AP3
java.io.IOException: The connection manager to ConnectionManager for: 'weblogic.rjvm.RJVMImpl@189ed0e - id: '5433424963141690658S:169.93.73.0:10040,10040,-1,-1,-1,-1,-1:pkssv049.***.net:10240,pkssv049.***.net:10241,pkssv050.***.net:10240,pkssv050.***.net:10241:LIQP1_LMSDomain:M1AP3' connect time: 'Mon Aug 24 20:24:02 BST 2009'' has already been shut down.
java.io.IOException: The connection manager to ConnectionManager for: 'weblogic.rjvm.RJVMImpl@189ed0e - id: '5433424963141690658S:169.93.73.0:10040,10040,-1,-1,-1,-1,-1:pkssv049.***.net:10240,pkssv049.***.net:10241,pkssv050.***.net:10240,pkssv050.***.net:10241:LIQP1_LMSDomain:M1AP3' connect time: 'Mon Aug 24 20:24:02 BST 2009'' has already been shut down
at weblogic.rjvm.ConnectionManager.getOutputStream(ConnectionManager.java:1686)
at weblogic.rjvm.ConnectionManager.createHeartbeatMsg(ConnectionManager.java:1629)
at weblogic.rjvm.ConnectionManager.sendHeartbeatMsg(ConnectionManager.java:607)
at weblogic.rjvm.RJVMImpl$HeartbeatChecker.timerExpired(RJVMImpl.java:1540)
at weblogic.timers.internal.TimerImpl.run(TimerImpl.java:273)
at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:464)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:200)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:172)*

Any help would be greatly appreciated. 任何帮助将不胜感激。

Here is some additional info.. 这是一些额外的信息..

Is the problem intermittent, or does reproduce every single time? 问题是间歇性的,还是每次都会重现? If the problem is intermittent, do you know what conditions it occurs under? 如果问题是间歇性的,你知道它发生在什么条件下吗? It occurs intermittently and we are not able to observe any pattern. 它间歇性地发生,我们无法观察到任何模式。

Are there any other errors/warnings logged either on the local server or on the remote server? 是否在本地服务器或远程服务器上记录了任何其他错误/警告? We see a lot of connection refused errors in the weblogic log 我们在weblogic日志中看到很多连接拒绝错误

Are both the managed servers in the same domain? 托管服务器是否在同一个域中? Yes

when you pass an instance of com.myclientcompany.server.eai.interactionspecimpl as argument to your ejb. 当您将com.myclientcompany.server.eai.interactionspecimpl的实例作为参数传递给您的ejb时。 the weblogic needs to deserialize(unmarshal) the object under the ejb context, and its needs the required class for unmarshalling. weblogic需要在ejb上下文中反序列化(解组)对象,并且需要解组所需的类。 so if you include the interactionspecimpl class in your ejb-jar file, then you do not need to include those classes in your servers classpath 因此,如果在您的ejb-jar文件中包含interactpecimpl类,那么您不需要在服务器类路径中包含这些类

This issue can occur if you have either a Duplicate entry for or due to a blank space in between. 如果您有一个重复条目或由于其间的空白,可能会发生此问题。

You need to check all the configuration files including the JDBC , JMS and the config.xml file to find such and entry. 您需要检查所有配置文件,包括JDBC,JMS和config.xml文件,以查找此类和条目。

Check if you have left a blank space while entering the JNDI name from the console as well. 检查您是否在从控制台输入JNDI名称时留下了空格。

Removing the blank space or removing the duplicate entry resolves this issue. 删除空白区域或删除重复的条目可以解决此问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 java.rmi.UnmarshalException: 解组参数错误; 嵌套异常是:java.lang.ClassNotFoundException: ServicesTableau - java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: java.lang.ClassNotFoundException: ServicesTableau ResultSet错误java.rmi.UnmarshalException - ResultSet Error java.rmi.UnmarshalException RMI客户端无法查找服务器-java.rmi.UnmarshalException - RMI client cannot lookup server - java.rmi.UnmarshalException Rmi UnmarshalException:错误解组返回 - Rmi UnmarshalException: error unmarshalling return RMI 调用中的 java.rmi.UnmarshalException - java.rmi.UnmarshalException in RMI call java.rmi.UnmarshalException:无法通过服务器提取客户端类 - java.rmi.UnmarshalException: unable to pull client classes by server 远程对象不支持RMI方法:java.rmi.UnmarshalException:无法识别的方法哈希 - RMI Method not supported by remote object: java.rmi.UnmarshalException: unrecognized method hash java.rmi.UnmarshalException:无法识别的方法hash:远程对象不支持的方法 - java.rmi.UnmarshalException: unrecognized method hash: method not supported by remote object 获取java.rmi.UnmarshalException:无法识别的方法哈希:远程对象不支持的方法 - Getting java.rmi.UnmarshalException: unrecognized method hash: method not supported by remote object java.rmi.UnmarshalException:java.lang.ClassNotFoundException。 无法使用RMI从另一个物理JVM访问类 - java.rmi.UnmarshalException: java.lang.ClassNotFoundException. Can't get acces to class from another physical JVM using RMI
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM