`

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

 
阅读更多
(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。



转自:http://www.wenjiesu.com/blog/?p=64
分享到:
评论

相关推荐

    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. **模块化**...

    怎么配置JDK和JBOSS

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

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

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

    配置jdk和jboss

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

    如何配置jdk、tomcat和Jboss

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

    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官网...

    JBoss-4.2.3.GA-jdk6.zip

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

    JBOSS5.1安装配置说明

    在 JBOSS 的配置文件 war-deployers-jboss-beans.xml 中,我们需要打开 useJK 的配置,以便启用 JK 代理。 启动 JBOSS 启动 JBOSS,可以使用 run.bat 文件,该文件位于 JBOSS_HOME\bin 目录下。在启动 JBOSS 之后...

    中间件jboss环境搭建01

    1. **JBoss版本选择**:根据项目的具体需求以及JDK版本选择合适的JBoss版本。例如,如果已经安装了JDK 1.6,则可以选择`jboss-5.0.0.GA-jdk6.zip`版本。 2. **JBoss解压安装**:将下载好的JBoss压缩包解压到指定...

    解决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旧版本(3~6)下载地址

    JBOSS旧版本(3~6)下载地址、JBOSS旧版本(3~6)下载地址、JBOSS旧版本(3~6)下载地址、JBOSS旧版本(3~6)下载地址

    how to install redhat+jdk+jboss

    ### 如何在Red Hat Enterprise Linux 5.4上安装Java JDK及JBoss #### 安装Red Hat Enterprise Linux 5.4 为了开始本教程,首先需要安装Red Hat Enterprise Linux (RHEL) 5.4操作系统。以下是安装步骤: 1. **获取...

    MacOS下jdk1.6+Eclipse4.4.2+JBoss4.2.2+SVN开发环境搭建

    本教程将详细介绍如何在MacOS系统上安装和配置JDK 1.6、Eclipse IDE 4.4.2(Luna)以及应用服务器JBoss 4.2.2,并结合SVN进行版本控制。以下是一步步的详细步骤: 1. **JDK 1.6 安装**: - 首先,访问Oracle官方...

    jboss一启动除开一闪而过.txt

    如果JDK版本不兼容或路径设置有误,很可能导致JBoss启动失败,表现为“一闪而过”的现象。具体而言,以下几点需注意: - **JDK版本**:确保安装的JDK版本与JBoss兼容。JBoss 5.0.6版本通常推荐使用JDK 1.5或1.6。 -...

    解决jboss中启动的优先级的问题

    标题提及的"解决jboss中启动的优先级的问题"是针对JBoss服务器如何确保特定应用或服务在其他依赖项启动后才启动的技术细节。 首先,我们需要理解JBoss中的部署模型。JBoss作为一款开源的应用服务器,它遵循Java EE...

Global site tag (gtag.js) - Google Analytics