Java EE システムの Java バージョンを 1.6 から 1.7 にアップグレード中です。Spring Web サービス (サーバー側で 1.5.8、クライアント側で 2.0.4) を広く使用しています。
初期テスト (java7 を使用) では、以下のような Web サービス呼び出しで断続的な問題が発生しています (最近アップグレードされたクライアントとサーバーの両方で GlassFish 3.1.2.2 を使用しています)。
- 失敗 1 (サーバー側のログは以下)
サーバー側での断続的な障害 (サーバー springws-1.5.8 およびクライアント spring-ws-2.0.4 - 両方で Java を 1.6 から 1.7 にアップグレード)
java.lang.IllegalStateException: Could not find SAAJ on the classpath
at org.springframework.ws.soap.saaj.SaajSoapMessage.getImplementation(SaajSoapMessage.java:261)
at org.springframework.ws.soap.saaj.SaajSoapMessage.<init>(SaajSoapMessage.java:84)
at org.springframework.ws.soap.saaj.SaajSoapMessage.<init>(SaajSoapMessage.java:70)
at org.springframework.ws.soap.saaj.SaajSoapMessageFactory.createWebServiceMessage(SaajSoapMessageFactory.java:168)
at org.springframework.ws.transport.AbstractWebServiceConnection.receive(AbstractWebServiceConnection.java:86)
at org.springframework.ws.transport.support.WebServiceMessageReceiverObjectSupport.handleConnection(WebServiceMessageReceiverObjectSupport.java:86)
at org.springframework.ws.transport.http.WebServiceMessageReceiverHandlerAdapter.handle(WebServiceMessageReceiverHandlerAdapter.java:57)
私の分析によると、上記の問題は、2.0.4 で修正されたspring ws バージョン 1.5.8 - https://jira.springsource.org/browse/SWS-750の既知の問題が原因であると思われます。しかし、バージョン アップグレードを行う前に、Spring ws が正式に Java7 をサポートしていることを確認したかったのです。何か案が?とにかく、クライアント側の Java バージョンを 1.6 に戻すと、この問題は解決されるようです。これは、jdk7 内にパッケージ化された xerces/xalan のバージョンに関連していると思われます。
- 失敗 2 (以下のサーバー側のログ)
サーバーが springws-2.0.4 でクライアントが spring-ws-1.5.8 である別のサブシステムでも同様のエラーが発生しました - 両方で Java が 1.6 から 1.7 にアップグレードされました。
org.springframework.ws.transport.http.MessageDispatcherServlet: Could not complete request
org.springframework.ws.soap.saaj.SaajSoapEnvelopeException: Could not access envelope: Unable to create envelope from given source: ; nested exception is com.sun.xml.messaging.saaj.SOAPExceptionImpl: Unable to create envelope from given source:
at org.springframework.ws.soap.saaj.SaajSoapMessage.getSaajVersion(SaajSoapMessage.java:260)
at org.springframework.ws.soap.saaj.SaajSoapMessage.getImplementation(SaajSoapMessage.java:342)
at org.springframework.ws.soap.saaj.SaajSoapMessage.<init>(SaajSoapMessage.java:117)
at org.springframework.ws.soap.saaj.SaajSoapMessageFactory.createWebServiceMessage(SaajSoapMessageFactory.java:184)
at org.springframework.ws.soap.saaj.SaajSoapMessageFactory.createWebServiceMessage(SaajSoapMessageFactory.java:58)
at org.springframework.ws.transport.AbstractWebServiceConnection.receive(AbstractWebServiceConnection.java:90)
どんな助けでも大歓迎です。