我们在生产中面临着一个问题。我们在网上搜了一遍又一遍,却找不到任何答案。此错误(下面的堆栈跟踪)发生在ejb查找从托管服务器1到管理服务器2时,使用虚拟ip进行查找。这是间歇性和随机间隔发生的。我们无法识别任何模式,如果ejb调用尝试了两三次,它就成功地通过了。
环境详细信息:服务器:WebLogic10.0运行在java1.5os上的MP1 : solaris
如果需要任何其他细节,请回复。
用于查找的源:
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;
}
url是一个指向托管服务器2的虚拟ip,它包含一个带有jndi“控件”的ejb。问题是,它在某些八次运算中成功,并随机失败,错误如下:
错误的堆栈跟踪:
*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)
由: java.rmi.UnmarshalException:错误解组参数引起;嵌套异常是:
java.io.StreamCorruptedException
在weblogic.rjvm.ResponseImpl.unmarshalReturn(ResponseImpl.java:221)
在weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:338)
在weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:252)
在weblogic.jndi.internal.ServerNamingNode_1001_WLStub.lookup(Unknown源代码中)
在weblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:379)
. 33
由: java.io.StreamCorruptedException引起
在java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1332)
在java.io.ObjectInputStream.readObject(ObjectInputStream.java:348)
在weblogic.utils.io.ChunkedObjectInputStream.readObject(ChunkedObjectInputStream.java:195)
在weblogic.rjvm.MsgAbbrevInputStream.readObject(MsgAbbrevInputStream.java:565)
在weblogic.utils.io.ChunkedObjectInputStream.readObject(ChunkedObjectInputStream.java:191)
在weblogic.jndi.internal.RootNamingNode_WLSkel.invoke(Unknown源代码中)
在weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:589)
在weblogic.rmi.cluster.ClusterableServerRef.invoke(ClusterableServerRef.java:224)
在weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:479)
在weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
在weblogic.security.service.SecurityManager.runAs(Unknown源代码中)
在weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:475)
在weblogic.rmi.internal.BasicServerRef.access$300(BasicServerRef.java:59)
在weblogic.rmi.internal.BasicServerRef$BasicExecuteRequest.run(BasicServerRef.java:1016)
.再增加2个*
Obtained the below mentioned stacktrace from the weblogic log. Could this error be related to our problem mentioned above?
```javascript
2009年2:11:04 AM <> <1251162664181> <<><1251162664181>.net:10240,pkssv049..net:10241,pkssv050..net:10240,BST>
“'5433424963141690658S:169.93.73.0:10040,10040,- id: pkssv050..net:10241:LIQP1_LMSDomain:M1AP3‘-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1:pkssv050 049。.net:10240,pkssv049..net:10241,pkssv050..net:10240,pkssv050..net:10241:LIQP1_LMSDomain:M1AP3’connection time:'Mon Aug 24 20:24:02 BST 2009‘”的连接管理器已经关闭。
“'5433424963141690658S:169.93.73.0:10040,10040,- id: pkssv050..net:10241:LIQP1_LMSDomain:M1AP3‘-1,-1,-1,-1,-1,-1,-1,-1,-1:pkssv050 049..net:10240,pkssv049..net:10241,pkssv050..net:10240,pkssv050..net:10241:LIQP1_LMSDomain:M1AP3’connection time:'Mon 24 20:24:02 BST 2009‘”的连接管理器已经关闭。
在weblogic.rjvm.ConnectionManager.getOutputStream(ConnectionManager.java:1686)
在weblogic.rjvm.ConnectionManager.createHeartbeatMsg(ConnectionManager.java:1629)
在weblogic.rjvm.ConnectionManager.sendHeartbeatMsg(ConnectionManager.java:607)
在weblogic.rjvm.RJVMImpl$HeartbeatChecker.timerExpired(RJVMImpl.java:1540)
在weblogic.timers.internal.TimerImpl.run(TimerImpl.java:273)
在weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:464)
在weblogic.work.ExecuteThread.execute(ExecuteThread.java:200)
在weblogic.work.ExecuteThread.run(ExecuteThread.java:172)*
任何帮助都将不胜感激。
这是一些额外的信息..。
这个问题是断断续续的,还是每一次都会重现?如果问题是间歇性的,你知道它是在什么条件下发生的吗?它是间歇性的,我们不能观察到任何模式。
是否有其他错误/警告记录在本地服务器或远程服务器上?我们在weblogic日志中看到了许多拒绝连接的错误
两个托管服务器都在同一个域中吗?是
发布于 2009-11-17 20:27:38
当您将com.myclientcompany.server.eai.interactionspecimpl的实例作为参数传递给ejb时。weblogic需要在ejb上下文下反序列化(解编组)对象,它需要解组所需的类。因此,如果在ejb-jar文件中包含interactionspecimpl类,则不需要将这些类包括在服务器类路径中。
发布于 2011-03-12 10:10:19
如果在中间有一个重复的条目,或者由于空白,则可能会发生此问题。
您需要检查所有配置文件,包括JDBC、JMS和config.xml文件,以找到这些文件和条目。
在从控制台输入JNDI名称时,请检查是否留有空白。
删除空白或删除重复条目解决了此问题。
https://stackoverflow.com/questions/1361615
复制相似问题