JBoss配置TLS

文件%JBOSS_HOME%\server\default\deploy\jboss-web.deployer\server.xml
增加下面陪孩子

<Connector port="8443" address="${jboss.bind.address}"
          protocol="HTTP/1.1" SSLEnabled="true" 
          maxThreads="100" strategy="ms" maxHttpHeaderSize="8192"
      	  emptySessionPath="true"
      	  scheme="https" secure="true" clientAuth="false" 
      	  disableUploadTimeout="true" 
      	  keystoreFile="${jboss.server.home.dir}/conf/node1.jks"
      	  keystorePass="passward"
      	  keyAlias="node1"
      	  sslProtocol = "TLS" />

Jboss4.x Soap and JDK6

在JDK6下运行Jboss4.x的web service时,会报下面的错误:
java.lang.UnsupportedOperationException: setProperty must be overridden by all subclasses of SOAPMessage

原因在于:
1、Jboss4.x是在JDK5下开发的
2、JDK6调整了SOAPMessage,setProperty要被强制重载
3、这样,在JDK6下运行Jboss4.x的程序,就会报上面的错误

解决方案:
强制使用JBoss endorsed目录下的lib

-Djava.endorsed.dirs=$JBOSS_HOME/lib/endorsed

Jboss4.2.3GA与Asix2通讯失败

两个项目,分别使用Jboss和Asix2开发了webservice及其client,通讯走的是soap1.2

最后用客户端访问服务端时,却发现Jboss的客户端,可以分别访问Jboss及Asix2的服务端
但Asix2的服务端却只能访问Asix2的服务端,访问Jboss的服务端时,会报下面的错误:
Transport level information does not match with SOAP Message namespace URI

经过跟踪Asix2的源码,并截取双方的通信内容,发现,
原来JBoss4.2.3GA返回消息时,没有按照soap1.2标准,返回正确的HTTP消息头
在Content-Type中,start-info无论如何只会填写text/xml,这和SOAP1.2要求的application/soap+xml是不一致的。

在JBoss网站发现,JBoss4.3以上的版本修复了这个问题,但4.3以上是收费的。
咋办啊,只好自己打补丁咯
下载jbossws-core源码包,按照下面的补丁内容,改好文件
https://issues.jboss.org/secure/attachment/12323928/JBWS-2419_patch.txt
重新打好jar包,替换过去
搞定:)