只需要再勇敢一点点

来源:互联网 发布:四川理工学院网络课程 编辑:程序博客网 时间:2024/05/21 07:03

最近在做一个webService的demo,写好代码,运行时总会有一下小状况,不过看看错误提示,搜搜解决方案,很快这些小状况就解决了,一般也就是少jar包的问题。在我越来越兴奋、认为运行结果马上就要出来时,控制台却又是一堆……
ERROR [org.jboss.ws.core.jaxws.SOAPFaultHelperJAXWS] (http-127.0.0.1-8080-1) SOAP request exception
java.lang.UnsupportedOperationException: setProperty must be overridden by all subclasses of SOAPMessage
at javax.xml.soap.SOAPMessage.setProperty(SOAPMessage.java:441)
at org.jboss.ws.core.soap.SOAPMessageImpl.<init>(SOAPMessageImpl.java:87)
at org.jboss.ws.core.soap.MessageFactoryImpl.createMessage(MessageFactoryImpl.java:215)
at org.jboss.ws.core.soap.MessageFactoryImpl.createMessage(MessageFactoryImpl.java:193)
at org.jboss.wsf.stack.jbws.RequestHandlerImpl.processRequest(RequestHandlerImpl.java:455)
at org.jboss.wsf.stack.jbws.RequestHandlerImpl.handleRequest(RequestHandlerImpl.java:295)
at org.jboss.wsf.stack.jbws.RequestHandlerImpl.doPost(RequestHandlerImpl.java:205)
……


我的开发环境:jboss-5.1.0.GA 、JDK1.7(后又换成JDK1.6)
网上关于"setProperty must be overridden by all subclasses of SOAPMessage"的文章还真多,不过基本上每篇都一样,原因是Jboss的soap实现与JDK版本冲突问题。具体描述为:JBoss的soap实现的是老版本的javax.xml.soap.SoapMessage接口,这个接口的setProperty方法在老版本是不需要override的,但是到了java6,由于Jdk自带soap包,而自带的这个包的SoapMessage接口对setProperty方法又强制其实现类要override自身,否则抛出上述异常。


搜到的文章中很少带有原因分析,大多都是直接写的解决方案:
将JBoss_hoome/client目录中的JBoss-native-saaj.jar、jboss-native-jaxws.jar、jbos-native-jaxws-ext.jar、jbossws-native-jaxrpc.jar拷贝到JBoss_home/lib/endorsed目录下。


照做后,还是不行,继续查资料,我发现几乎每篇写的都差不多。问题还是没有什么进展,然后,我将JDK1.7换成了JDK1.6,也不知道这样有什么意义,就是因为查到的资料中写的都是JDK1.6下出现的问题。我也不知道这算不算是病急乱投医。最后的结果是:换了JDk版本后仍然没有解决。
不是代码的问题,环境配置也按照别人经验修改过了,可就是不行,请教过百老师,求助过谷老师,看过博客,到过论坛,几乎都是这样的答案,当时的想法就是:那些文章的作者真的都按照这种方法解决问题了?


到了第二天晚上,问题还是没有解决,我也把自己搞的一点都不兴奋了,但是这个问题又必须要解决,于是,我找到了之前项目中负责WebService的贾琳,问他当初有没有遇到过这个问题。他说了一句:奥,这个异常啊! 我当时一听这话,立马就兴奋起来了,心想有救了,问题马上就要解决了,哈哈。紧接着,贾琳就打开了他的博客,里面就是关于这个异常的分析以及一步一步的解决过程。原文链接:http://blog.csdn.net/shan9liang/article/details/17269269


对比发现,我完成了第一步,也就是大多数人写到的jboss中jar包的问题。继续往下看,贾琳的博客中也写了,到这一步之后,如果单独从jboss启动,运行没有问题,如果从eclipse中启动,依然报该错误,他找到的解决方案是再将那几个jar包拷贝到java_home/jre/lib中,并且分析了原因。


被这个问题困扰了两天,还把自己整的挺忧伤的,其实,贾琳的那篇博客,之前我看过,当时一点都想不起来了,可是,我明明知道他研究过这一块儿,他的博客里应该会有记录的,在我自己实现webService时,我没有去他博客看过,现在出了这个问题,我也没有去他博客看过。


另外,我想到之前我在寻找解决方案时,虽然众多的文章都是一样的,但是好像有一篇提到过在jboss/bin中启动,只是,当时我有点烦了,没有心思去弄了,甚至当时都有点怀疑代码的问题了,因为平时犯的错误大多都是代码上的问题。现在看来,其实当时再多往前走一步,可能异常就解决了。虽然没有像贾琳分析的那么深入,但至少问题又有了一点进展。这就是文章标题的来由,只需要再勇敢一点点。

0 0
原创粉丝点击