`
catkingwong
  • 浏览: 19657 次
社区版块
存档分类
最新评论

转载:jboss 中,jdk版本不兼容问题的深入探究

阅读更多

原文地址:http://apps.hi.baidu.com/share/detail/39968108

(1).
今天,详细研究了在jdk1.6下,jboss4.2 不能正常工作的问题。
出现了如下错误:
setProperty must be overridden by all subclasses of SOAPMessage。。。

出现这个错误的根源,分析如下:
jbossws-client.jar 中有一个类叫做:SOAPMessageImpl, 它的版本是1.5
jboss-saaj.jar 中有一个类叫做 SOAPMessage(这是一个类,而不是一个接口,需要继承),它的版本也是1.5
setProperty 和 getProperty 方法都实现了。

javaee.jar 中也有 SOAPMessage 类,
setProperty 和 getProperty 方法都没有实现。

javaee.jar 和 jboss-saaj.jar 可以共存,系统自动调用 jboss-saaj.jar。
(经验证,与顺序无关,但是不知道为什么可以很好的工作)

但是,当我们使用jdk1.6时,jdk 中包括了新版本的SOAPMessage,
这个新 SOAPMessage 的 setProperty 方法抛出了 UnsupportedOperationException,出现了版本不兼容的问题。
在jdk1.5中并没有这个类。

尝试的解决方法如下:
(a). 将jboss-4.2.3.GA-jdk6中的jbossws-client.jar,拷贝到客户端
问题不能解决。
原因是SOAPMessageImpl并没有override setProperty 方法。

(b). 将jboss-5.1.0.GA-jdk6中的jbossws-native-core.jar,拷贝到客户端
问题不能解决。
原因是SOAPMessageImpl并没有override setProperty 方法。

(c). 将jboss-6.0.0.M2中的jbossws-native-core.jar,拷贝到客户端
问题部分解决,但是这个解决方案并不能被客户接受。
原因是,jboss-6.0.0.M2 只能支持jdk1.6(当加载到jbossws-native-core.jar中类时,出现了错误)
如果在jdk1.5版本下使用,会出现Bad version number in .class file

(2).

Java endorsed 目录的问题

endorsed 这个单词很少见:金山在线词典上endorse的翻译是:
endorse
vt.
在票据背面签名; 背书
签署, 签注, 批注(公文等), [英]在(驾驶员执照)上注明违章录
承认, 认可, 赞成, 担保
[南非]把(进入城市的黑人)强制送回农村(out)
endorse off
背书证明支取一部分票面金额
endorse over
背书(票据等)将所有权让与(别人)
第四条比较符合这里的意思,这个目录里面放置的jar文件,将有覆盖系统API的功能。可以牵强的理解为,将自己修改后的API打入到虚

拟机指定的启动API中,取而代之。

今天,为了修复Java6对javascript支持中的一个bug,
我覆盖了系统API(sun.org.mozilla.javascript.internal.TokenStream)。

可是,当我吧修改后代码的jar发布到jdk/lib/目录下下的endorsed 目录里后从新运行测试,确发现修改并没有生效。

仔细检查后发现,系统属性并没有如我期望的那样指向javaw.exe所在的jdk目录中,而是指向了额外安装的jre目录下。

我运行的jre javaw.exe位置是:
C:\Program Files\Java\jdk1.6.0_02\bin\javaw.exe
我想,endorsed目录,应该就指向
C:\Program Files\Java\jdk1.6.0_02\lib\endorsed

System.out.println(System.getProperty(“java.endorsed.dirs”));后发现,他意外的指向了:
C:\Program Files\Java\jdk1.6.0_02\jre\lib\endorsed

请参考这里

(3).
如何在 JDK6 下使用 JBoss 5 AS 的 Web Service:

JBoss 5(测试的JBoss版本为jboss-5.0.1.GA-jdk6) 中的 Web Service 实现所使用的 JAX-WS 和 JAXB 版本是 2.1,但 JDK6 中带的

JAX-WS 与 JAXB 版本却是 2.0。如果无视这个问题,使用 wsimport 指令生成 Web Service 客户端将无法工作。要解决该问题,比较

快捷的办法是将 JDK6 的 JAX-WS 和 JAXB 支持升级到 2.1。
升级 JDK6 的 JAX-WS 与 JAXB

在 JBoss 5 的 lib\endorsed 目录中有如下库:
jaxb-api.jar
jbossws-native-jaxrpc.jar
jbossws-native-jaxws.jar
jbossws-native-jaxws-ext.jar
jbossws-native-saaj.jar
xercesImpl.jar
将它们拷贝到 JAVA_HOME\lib\endorsed 和 JRE_HOME\lib\endorsed 目录下便可支持 JAX-WS 与 JAXB 2.1。

一、运行环境配置

1. 安装JDK5.0

2. 到jboss官方网下载jboss4.2.3GA.zip,解压即可。下载地址如果项测试jboss是否成功,设置系统变量变量名:JBOSS_HOME 值:JBOSS的解压路径。同时看一下系统变量中有没有变量JAVA_HOME,如果没有定义它,名JAVA_HOME,值:JDK的安装路径,例如:C:\Sun\SDK\jdk.

3. 测试是否成功,双击D:\jboss-4.2.3.GA\bin中的run,开始在doc下运行直到出现09:44:08,875 INFO [Server] JBoss (MX MicroKernel) [4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA date=200807181417)] Started in 17s:219ms.然后在IE中输入:http://localhost:8080/进入jboss界面,如果有需要密码的地方都是admin。

4. 如果你在jbossIDE中启动测试JBOSS服务不需要设置环境变量。打开Jbuilder2008,它的使用特别方便。选择windowspreferences,出现preferences界面,点击serverruntime environment,点击右边的Add按钮,出现如下图的窗口,

 

选择jboss的版本点击next,出现

 

Application server diractory中选择jboss所在的路径。完成。打开windows->show view选择server-servers窗口。

 

在server窗口点击右键选择new server,

 

点击运行按钮开始运行,

 

成功启动在console窗口中最后09:44:08,875 INFO [Server] JBoss (MX MicroKernel) [4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA date=200807181417)] Started in 17s:219ms。界面,

 

双击console窗口,

 

然后在IE中输入:http://localhost:8080/进入jboss界面,如果有需要密码的地方都是admin。启动中若出现8080端口被占用的情况jboss所用端口如1099,1098 ,8080, 8083等端口)。可以下载端口查看器(Active Ports)进行检查,如果端口被占用就关闭此进程。

分享到:
评论

相关推荐

    jboss-logging-3.4.3.Final-API文档-中文版.zip

    赠送jar包:jboss-logging-3.4.3.Final.jar; 赠送原API文档:jboss-logging-3.4.3.Final-javadoc.jar; 赠送源代码:jboss-logging-3.4.3.Final-sources.jar; 赠送Maven依赖信息文件:jboss-logging-3.4.3.Final....

    jboss-logging-3.4.1.Final-API文档-中文版.zip

    赠送jar包:jboss-logging-3.4.1.Final.jar; 赠送原API文档:jboss-logging-3.4.1.Final-javadoc.jar; 赠送源代码:jboss-logging-3.4.1.Final-sources.jar; 赠送Maven依赖信息文件:jboss-logging-3.4.1.Final....

    linux 下 配置JBoss6.0+JDK7.0

    在Linux环境下配置JBoss6.0与JDK7.0是一项关键的任务,因为这两个组件是许多企业级Java应用的基础。JBoss是一个流行的开源应用服务器,它支持Java EE规范,而JDK则是运行Java应用程序和应用服务器所必需的开发工具包...

    jboss7.1 linux版本

    在这个环境中,JBoss AS 7.1不支持Java Development Kit (JDK) 1.8,因此在安装和配置时需确保使用的是兼容的JDK版本,如JDK 1.6或1.7。 首先,让我们详细了解一下JBoss AS 7.1.0.Final的关键特性: 1. **模块化**...

    Servlet引擎:JBoss与Tomcat、Jetty协同工作

    通过JMX,JBoss能够管理和监控服务器上的各种服务、组件及资源,包括但不限于EJBs、JMS、事务处理等。这不仅提高了系统的可管理性和可靠性,也简化了应用程序的部署和故障排查过程。 在JBoss的架构中,每一个服务或...

    jboss-logging-3.4.2.Final-API文档-中文版.zip

    赠送jar包:jboss-logging-3.4.2.Final.jar; 赠送原API文档:jboss-logging-3.4.2.Final-javadoc.jar; 赠送源代码:jboss-logging-3.4.2.Final-sources.jar; 赠送Maven依赖信息文件:jboss-logging-3.4.2.Final....

    JBoss-4.2.3.GA-jdk6.zip

    10. **JDK 6兼容性**:该版本的JBoss与JDK 6紧密集成,利用了JDK 6的性能改进和新特性,如ScriptEngine API,用于执行脚本语言。 在压缩包中的“jbos-4.2.3.GA”目录下,通常包含以下子目录和文件: - `bin`:存放...

    如何配置jdk、tomcat和Jboss

    - **兼容性**:考虑到不同版本之间的兼容性问题,尤其是JDK版本与其他软件之间的兼容性。 - **安全性和性能**:在生产环境中考虑安全性设置和性能优化措施。 #### 五、总结 通过以上步骤,可以成功配置JDK 1.5、...

    jboss-threads-3.1.0.Final-API文档-中文版.zip

    赠送jar包:jboss-threads-3.1.0.Final.jar; 赠送原API文档:jboss-threads-3.1.0.Final-javadoc.jar; 赠送源代码:jboss-threads-3.1.0.Final-sources.jar; 赠送Maven依赖信息文件:jboss-threads-3.1.0.Final....

    怎么配置JDK和JBOSS

    ### 如何配置JDK与JBoss 在进行Java应用程序开发时,经常需要用到JDK(Java Development Kit)和JBoss这样的应用服务器。本文将详细介绍如何下载并配置JDK和JBoss,帮助开发者顺利搭建开发环境。 #### 一、JDK的...

    配置jdk和jboss

    本文将详细介绍如何在Windows XP系统中配置Eclipse集成开发环境(IDE)的JDK和JBoss服务器,以便于顺利进行Java应用程序的开发和部署。 首先,我们要配置JDK。JDK(Java Development Kit)是Java编程语言的开发工具包...

    jboss-logging-3.3.2.Final-API文档-中文版.zip

    赠送jar包:jboss-logging-3.3.2.Final.jar; 赠送原API文档:jboss-logging-3.3.2.Final-javadoc.jar; 赠送源代码:jboss-logging-3.3.2.Final-sources.jar; 赠送Maven依赖信息文件:jboss-logging-3.3.2.Final....

    JBossTools实践系列:JBossESB服务开发入门

    JBossTools实践系列:JBossESB服务开发入门

    jdk1.6与jboss5.x冲突问题的解决方法

    标题中的“jdk1.6与jboss5.x冲突问题的解决方法”指的是在使用Java Development Kit(JDK)1.6版本与JBoss Application Server 5.x版本进行集成时可能出现的兼容性问题。JBoss AS是一款开源的企业级Java应用程序...

    x5+jboss+jdk

    这是因为JBoss 6.0是设计在JDK 6环境下运行的,尽管后续的JDK版本可能具有更多的优化和功能,但为了确保与JBoss 6.0的兼容性,开发者需要遵循此要求。安装并设置好JDK6后,确保`JAVA_HOME`环境变量指向了正确的JDK6...

    jdk6 jboss5 webservice bug

    标题 "jdk6 jboss5 webservice bug" 暗示了这是一个关于Java开发环境中,具体是JDK 6和JBoss Application Server 5版本中Web服务(Webservice)出现的问题。这个问题可能是由于某些兼容性、配置错误或者已知的bug...

    linux 下jdk ,jboss的安装和jboss的自启动.txt

    ### Linux下JDK与JBoss的安装及JBoss自启动设置 #### JDK的安装步骤 在Linux环境下安装JDK是部署Java应用的基础。本部分将详细介绍如何在Linux系统上安装JDK。 1. **下载JDK安装包**: - 通常推荐从Oracle官网...

    解决JBoos5.0运行EJB3.0_WebServices跟jdk1.6的兼容问题用到的jar包

    在本案例中,我们关注的是JBoss 5.0版本与EJB 3.0以及Web Services的集成,特别是针对使用Java Development Kit (JDK) 1.6时可能出现的兼容性问题。以下是对这些关键概念的详细解释和解决方案: 1. **EJB 3.0**:...

    jboss-annotations-api_1.3_spec-2.0.1.Final-API文档-中英对照版.zip

    赠送jar包:jboss-annotations-api_1.3_spec-2.0.1.Final.jar; 赠送原API文档:jboss-annotations-api_1.3_spec-2.0.1.Final-javadoc.jar; 赠送源代码:jboss-annotations-api_1.3_spec-2.0.1.Final-sources.jar;...

Global site tag (gtag.js) - Google Analytics