2011-08-17 19 views
3

私は前に正常に展開され、新しい機能を追加しているSpring Frameworkベースのアプリケーションを持っています。私たちの開発マシンはJDK6とTomcat7です。我々はSpring 3.1.0.M2を使用しています。古いコードではApache CXF 2.4.1を使用してWebサービスを提供し、Tomcat 5.0とJDK5のテストサーバーにデプロイします。Apache CXFのナイトメール

私は、外部サービスにアクセスするには、この春のWebサービスクライアントの定義をした新機能の一部として

<bean id="urlWebService" class="org.springframework.remoting.jaxws.JaxWsPortProxyFactoryBean"> 
    <property name="serviceInterface" value="au.com.company.app.client.urlservice.UrlWebService" /> 
    <property name="wsdlDocumentUrl" value="http://dev.urlservice-int.services.company.com.au/v1_0/shortener?wsdl" /> 
    <property name="namespaceUri" value="http://urlservice.services.company.com.au/shortener" /> 
    <property name="serviceName" value="GenerateShortenedUrlWebServiceImplService" /> 
    <property name="portName" value="generateShortenedUrlWebServicePort" /> 
</bean> 

しかし、今、私は試してみて、テストサーバー上に展開するときに私が取得:

Caused by: java.lang.AbstractMethodError: org.apache.xerces.dom.ElementNSImpl.setUserData(Ljava/lang/String;Ljava/lang/Object;Lorg/w3c/dom/UserDataHandler;)Ljava/lang/Object; 
    at org.apache.cxf.staxutils.StaxUtils.addLocation(StaxUtils.java:1083) 
    at org.apache.cxf.staxutils.StaxUtils.readDocElements(StaxUtils.java:971) 
    at org.apache.cxf.staxutils.StaxUtils.readDocElements(StaxUtils.java:947) 
    at org.apache.cxf.staxutils.StaxUtils.read(StaxUtils.java:874) 
    at org.apache.cxf.wsdl11.WSDLManagerImpl.loadDefinition(WSDLManagerImpl.java:226) 
    at org.apache.cxf.wsdl11.WSDLManagerImpl.getDefinition(WSDLManagerImpl.java:186) 
    at org.apache.cxf.wsdl11.WSDLServiceFactory.<init>(WSDLServiceFactory.java:92) 
    at org.apache.cxf.jaxws.ServiceImpl.initializePorts(ServiceImpl.java:203) 
    at org.apache.cxf.jaxws.ServiceImpl.<init>(ServiceImpl.java:147) 
    at org.apache.cxf.jaxws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:90) 
    at javax.xml.ws.Service.<init>(Service.java:56) 
    at javax.xml.ws.Service.create(Service.java:697) 
    at org.springframework.remoting.jaxws.LocalJaxWsServiceFactory.createJaxWsService(LocalJaxWsServiceFactory.java:125) 
    at org.springframework.remoting.jaxws.JaxWsPortClientInterceptor.prepare(JaxWsPortClientInterceptor.java:334) 
    at org.springframework.remoting.jaxws.JaxWsPortClientInterceptor.afterPropertiesSet(JaxWsPortClientInterceptor.java:316) 
    at org.springframework.remoting.jaxws.JaxWsPortProxyFactoryBean.afterPropertiesSet(JaxWsPortProxyFactoryBean.java:42) 

私は今この2日間行ってきて、私がGoogleで考えることができるすべてを試しました。 Tomcat 5.0には古いバージョンのXercesがインストールされており、CXFが使用しようとしているようです。

現実には、私はこの春のクライアントコードでCXFを全く必要としないことです。削除できないレガシーコードのためにしか存在しません。私はCXFにこのクライアントを無視させる方法を見つけ出すことができませんでした。私はサーバーとJDKをアップグレードしたり、古いXercesを削除することはできません。私は、CXFがXercesの代わりにXercesの1つを使用することを願って、Xercesの新しいバージョンと他の幅広いXML APIを含めようと試みました。しかし、これまでのところ何も働かない。

(a)CXFがこのBeanにフックを与えるのを止める方法はありますか?または(b)CXFに少なくとも旧式のXercesを使用しないように指示しますか?

+2

Tomcat7/Java6で開発し、Tomcat5/Java5にデプロイするのは全く狂っています。あなたはそれをするのに大きな問題を抱えています。 – skaffman

答えて

5

あなたはXercesのバージョンをTomcat階層のXercesの古いコピーを介して強制的にCXFのスロートに送りました。あなたはtomcatのXercesをアップグレードする必要があります - それは '支持された'方法です。

Java 1.5のWebサービスクライアントでCXFを使用することは避けられません。組み込みのJAX-WSの代替手段はありません。 1.6で動作していた場合は、代わりに組み込みプロバイダを使用できます。

0

Tomcat 7.0.39の代わりにtomcatサーバー用のTomEE 1.5.2を使用してみてください。TomEEは、libのすべてのjarファイルと必要なものすべてを持つようにセットアップされています。

関連する問題