-
使用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
目前还没有答案
相关推荐
JBoss是一个开源的J2EE应用服务器,它遵循高规格的模块化和可插入式设计原则,以实现灵活且高效的软件架构。这个架构的关键特性之一是利用了工业标准的Java Management Extensions (JMX) 来进行管理和提供对...
下面以一个简单的服务为例,展示如何使用JBoss MC开发一个服务。 ##### 8.1 功能实现 首先,需要确定服务的具体功能,例如实现一个简单的日志记录服务。 ##### 8.2 配置文件 接下来,编写配置文件来描述服务的...
如果这些端口被多个JBoss实例共享,则会导致其中一个或多个实例无法启动。 #### 二、修改端口配置 为了确保在同一台机器上部署的多个JBoss服务器能够正常工作,我们需要修改每个JBoss实例的配置文件,更改其默认的...
JBoss 是一个开源的 Java 企业级应用服务器,它遵循 Java 企业版(J2EE)规范,提供了一个全面的平台来开发和部署分布式、多层的企业应用。JBoss 的核心特性在于其高度模块化和可插入的架构设计,这使得它能够灵活...
### JBoss 使用详细操作步骤 #### 一、安装与配置 JBoss 在开始介绍 JBoss 的使用之前,我们首先需要确保已经正确安装并配置了 JBoss。以下是一些基本的操作步骤: 1. **下载 JBoss**:访问 JBoss 官方网站下载...
JBOSSEAP(Java Business Service Suite Enterprise Application Platform)是由Red Hat公司开发的一个开源中间件平台,主要用于部署和管理Java企业级应用程序。本手册将全面介绍JBOSSEAP,即通常所说的JBOSS,的...
JBoss是一个免费的开放的J2EE实现。它的架构是基于高标准的模块化和插入式设计。JBoss使用工业标准的JMX来管理, JBoss组件和为EJB提供服务。基于我们以前的开发经验,我们发现了不同的J2EE应用服务器间的存在着巨大...
命名服务是JBoss中一个重要的组件,它提供了命名和目录服务。主要组件和接口包括: - **JNDI API**:Java Naming and Directory Interface API,用于查找和引用远程对象。 - **依赖性**:命名服务与EJB容器之间的...
如果发现log4f与jboss出现冲突,将文件放到WEB-INF文件下可解决问题
在JBoss应用服务器中,管理和控制应用的启动顺序是一个关键任务,特别是在大型的企业级系统中,各个组件和服务的启动优先级直接影响到整个系统的稳定性和功能完整性。标题提及的"解决jboss中启动的优先级的问题"是...
下载我发布的JJBoss架构分析.doc.001,JBoss架构分析.doc.002,JBoss架构分析.doc.003,JBoss架构分析 <br>.doc.004--...然后双击JBoss架构分析.doc.004--合并批处理文件 <br>Link.bat即可合并三个文件未一个文件
Seam作为一个强大的框架,能够整合多种技术,如EJB、JSF、CDI等,简化MVC模式的实现,使开发者可以更加专注于业务逻辑,而不是繁琐的配置和状态管理。因此,对于想要提升Java Web开发效率的工程师来说,学习和理解...
JBoss 是一个开源的、基于Java的、全面实现了J2EE规范的应用服务器。它提供了企业级的功能,如EJB(Enterprise JavaBeans)、JMS(Java Message Service)、JTS/JTA(Java Transaction Service / Java Transaction ...
在本文中,我们将深入探讨如何有效地导入和分析JBoss源码,以及在过程中可能遇到的问题及其解决方法。首先,我们需要确保开发环境的正确配置。 **环境配置** 1. **Maven集成**:为了导入和构建JBoss源码,我们需要...
JBoss是Red Hat公司开发的一款开源的应用服务器,它基于Java EE(Enterprise Edition)规范,提供了全面的企业级应用程序部署和管理解决方案。本篇文章将详细讲解JBoss的安装和部署过程,帮助你深入了解如何在本地...
在使用jBoss Enterprise Application Platform (EAP) 6.2 或 jBoss Application Server (AS) 7及以上版本的过程中,可能会遇到字符编码问题,即所谓的“乱码”现象。这种现象通常出现在应用程序的日志、输出数据或与...
在IT领域,JBoss作为一个广泛使用的开源应用服务器,其启动问题常常困扰着开发者。本文将深入探讨“jboss一启动除开一闪而过”的问题及其解决方案,基于标题、描述、标签以及部分内容,我们将全面解析这一现象背后的...