0 0

使用jboss的时候出现一个问题,没有太明确的分析思路,求解5

大家好!

我的环境是这样的:


 

 

我现在碰到的问题是,在客户端程序对部属在jboss中的ejb进行jndi查找和方法调用的时候,都非常的慢;一般情况下,执行

 

//initialContext是初始上下文;
initialContext.lookup("ejb/TestService");

 上面的语句,一般是花费60000多毫秒的时间;(我测试过比较正常的lookup是500左右毫秒,当然了这也跟实际的网络环境有关系);

 

接下来的代码是这样的

 

ejbHome = (EJBHome)PortableRemoteObject.narrow(nsObject, EJBHome.class);
			
	System.out.println("narrow OK");			
			
Method method = ejbHome.getClass().getMethod("create", null);
//调用create方法
EJBObject obj = (EJBObject)method.invoke(ejbHome, null);

	System.out.println("invoke ok");

 

 在这个调用create方法的时候,就会抛出异常,如下:

 

java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at com.boco.topouc.connector.impls.Test.main(Test.java:54)
Caused by: java.rmi.ConnectIOException: error during JRMP connection establishment; nested exception is: 
	java.net.SocketTimeoutException: Read timed out
	at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:286)
	at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:184)
	at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:110)
	at org.jboss.invocation.jrmp.server.JRMPInvoker_Stub.invoke(Unknown Source)
	at org.jboss.invocation.jrmp.interfaces.JRMPInvokerProxy.invoke(JRMPInvokerProxy.java:135)
	at org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:96)
	at org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.java:46)
	at org.jboss.proxy.SecurityInterceptor.invoke(SecurityInterceptor.java:53)
	at org.jboss.proxy.ejb.HomeInterceptor.invoke(HomeInterceptor.java:173)
	at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:85)
	at $Proxy0.create(Unknown Source)
	... 5 more
Caused by: java.net.SocketTimeoutException: Read timed out
	at java.net.SocketInputStream.socketRead0(Native Method)
	at java.net.SocketInputStream.read(SocketInputStream.java:129)
	at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
	at java.io.BufferedInputStream.read(BufferedInputStream.java:237)
	at java.io.DataInputStream.readByte(DataInputStream.java:248)
	at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:228)
	... 15 more
 

上面异常中,关键的异常是:

 

Caused by: java.rmi.ConnectIOException: error during JRMP connection establishment; nested exception is: 
	java.net.SocketTimeoutException: Read timed out

记录了一下这个超时异常发生的时间,大概也是60000多毫秒左右;

 

 

 

在这些客户端的方法执行的时候,jboss服务端没有报出任何错误日志;

 

 

 

 我做过的努力:

上网google搜索,按照类似的异常查找,能找到不少,但是基本都是提问,没有什么答案;

我下载jboss 3.2.5的源码中naming包的源代码,进行代码跟踪,就只找到发生阻塞的大概地方(我只对jndi的lookup进行调试查找了,

没有对create方法进行调试过,但是我相信两个都是因为相同的原因而出现问题,只是一个jndi没有超时设定,所以没有抛出异常,而create

方法有超时设定,造成了异常的抛出);

此外我把实际业务的ejb对象暂时卸载了,只是加载了一个测试的ejb对象,非常的简单;

 

 

 

 

我的分析:

我认为可能是本身jboss中一些服务或者其部署的环境(操作系统,或者是环境变量)对jboss服务产生了影响,但是我不知道是哪出了错;

而且 相同的jboss服务在很多地方,(solaris,hp-unix)都好使,运行正常;呵呵,非常奇怪!

 

 

还有一个地方,有时候服务上会报这个异常:

 2011-02-22 14:55:42,852 70787 INFO [STDOUT] (JNP Server:) Exception in thread "JNP Server"

2011-02-22 14:55:42,852 70787 INFO  [STDOUT] (JNP Server:) java.lang.OutOfMemoryError: unable to create new native thread
2011-02-22 14:55:42,853 70788 INFO  [STDOUT] (JNP Server:)      at java.lang.Thread.start0(Native Method)
2011-02-22 14:55:42,853 70788 INFO  [STDOUT] (JNP Server:)      at java.lang.Thread.start(Thread.java:574)
2011-02-22 14:55:42,853 70788 INFO  [STDOUT] (JNP Server:)      at org.jnp.server.Main.listen(Main.java:320)
2011-02-22 14:55:42,853 70788 INFO  [STDOUT] (JNP Server:)      at org.jnp.server.Main.run(Main.java:288)
2011-02-22 14:55:42,853 70788 INFO  [STDOUT] (JNP Server:)      at java.lang.Thread.run(Thread.java:595)

 

创建不了线程???? 通过jboss的控制台和我自己写的代码测试了一下,只有50多个thread!!!!

网上有说,在hp-unix上,一个进程数创建的线程数跟线程的栈空间有关系,问题还在细查(主要是对hp-unix中查看线程状况的还不太懂),我跑过一个测试程序

一直创建thread,可以创建至少2000多个;碰到这个问题,我现在只能重启服务;(不知道这个跟前面的问题是否有关联)

 

 

 

请高手帮着看看,指点迷津;

2011年2月22日 15:06
  • 大小: 44.7 KB
  • 大小: 82.6 KB
目前还没有答案

相关推荐

Global site tag (gtag.js) - Google Analytics