- - PR -
WebサービスからWebサービスを呼ぶ
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-12-13 13:15
こんにちは.
Tomcat5.0上に公開したWebサービスの中で,さらに別のサービスを呼び出す処理を実装しましたが,エラーが出てしまい,原因がわからずになやんでいます. AXIS1.1を利用しています.サービス実装は以下の通りです. package orderAdapter; import org.apache.axis.client.Service; import org.apache.axis.client.Call; import javax.xml.namespace.QName; import java.net.URL; public class OrderAdapterWrapper { public java.lang.String OrderAdapter( java.lang.String a , java.lang.String b ) throws Exception { Service service = null; Call call = null; java.lang.String rtn = null; try { service = new Service(); call = (Call)service.createCall(); call.setTargetEndpointAddress(new URL("http://localhost:8080/axis/services/OrderAdapter")); call.setTimeout(new Integer(1000*10)); call.setOperationName(new QName("urn:adapter", "OrderAdapter")); call.addParameter( new QName("", "a"), new QName("http://www.w3.org/2001/XMLSchema", "string"), java.lang.String.class, javax.xml.rpc.ParameterMode.IN); call.addParameter( new QName("", "b"), new QName("http://www.w3.org/2001/XMLSchema", "string"), java.lang.String.class, javax.xml.rpc.ParameterMode.IN); call.setReturnType(new QName("http://www.w3.org/2001/XMLSchema", "string"), java.lang.String.class); rtn = (java.lang.String)call.invoke(new java.lang.Object[] { a , b }); } catch (Exception e) { e.printStackTrace(); throw e; } return rtn; } } 上のソースの,次の行で,以下のような問題が発生しています. call.setReturnType(new QName("http://www.w3.org/2001/XMLSchema", "string"), java.lang.String.class); エラー java.lang.NullPointerException at org.apache.axis.client.Call.getTypeMapping(Call.java:2069) at org.apache.axis.client.Call.setReturnType(Call.java:1054) at org.apache.axis.client.Call.setReturnType(Call.java:1073) at orderAdapter.OrderAdapterWrapper.OrderAdapter(OrderAdapterWrapper.jav a:37) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl. java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces sorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.j ava:402) at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider .java:309) at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java: 333) at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrateg y.java:71) at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:150) at org.apache.axis.SimpleChain.invoke(SimpleChain.java:120) at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:481 ) at org.apache.axis.server.AxisServer.invoke(AxisServer.java:323) at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:85 4) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBas e.java:339) at javax.servlet.http.HttpServlet.service(HttpServlet.java:810) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl icationFilterChain.java:237) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF ilterChain.java:157) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV alve.java:214) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValv eContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav a:520) at org.apache.catalina.core.StandardContextValve.invokeInternal(Standard ContextValve.java:198) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV alve.java:152) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValv eContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav a:520) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j ava:137) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValv eContext.java:104) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j ava:117) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValv eContext.java:102) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav a:520) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal ve.java:109) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValv eContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav a:520) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929) at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:16 0) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java :793) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.proce ssConnection(Http11Protocol.java:702) at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java :571) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP ool.java:644) at java.lang.Thread.run(Thread.java:534) DeserializationContextImpl内でのNullPointerExceptionのようです. しかし,同じソースコードをローカルで実行した場合には,問題なく実行できることから判断すると,どうも,ローカルには存在するが,Tomcat上には存在しない何かがあるように思えます.でも,それが何なのかはわかりません. アドバイスをいただければ幸いです.よろしくお願いします. | ||||||||
|
投稿日時: 2004-12-13 13:30
問題の出る環境ではJ2SE5.0を使用していませんか?
axisのNPEで1.4.2にダウングレードして対処したことがあります。 | ||||||||
|
投稿日時: 2004-12-13 13:52
いえ,Javaは1.4.2を利用しています.
| ||||||||
|
投稿日時: 2004-12-13 14:29
まったくのあてずっぽですが、Axisのライブラリはどこに入れていますか?
| ||||||||
|
投稿日時: 2004-12-13 14:56
uk様
Axisのライブラリは,%TOMCAT_HOME%/webapp/axis/lib内に入っています. また,別のアプリケーション(BPELエンジン)のために,%TOMCAT_HOME%/shared/lib内にも入っています. よろしくお願いします. | ||||||||
|
投稿日時: 2004-12-13 16:26
問題になっているWebサービスのコンテキストがこれということですか? #axis/libではなく、axis/WEB-INF/libのような気がしますが
これを一旦削除して再起動してから実行してみたらどうなりますか? | ||||||||
|
投稿日時: 2004-12-13 20:16
アドバイスありがとうございます.
>問題になっているWebサービスのコンテキストがこれということですか? >#axis/libではなく、axis/WEB-INF/libのような気がしますが その通りでした,すみません. さて,実験をしてみたのですが,shared/lib内のaxisライブラリを削除してしまうと,BPELエンジンが利用不可能になってしまうので,無理でした. 一方,axis/WEB-INF/lib内のaxisライブラリを削除すると,問題なく動作しました. 複数のaxisライブラリの競合ということでしょうか・・・? | ||||||||
|
投稿日時: 2004-12-13 22:07
BPWS4Jですか? 一台のTomcatでWebサービス連携やってみてるのかな。
ちょっとこれだけだとなんともいえないですが、複数のライブラリが競合するような状態だと 不具合が出た経験は何度かあります。どちらかというと、なるべくライブラリはローカル (WEB-INF/lib)に入れたほうが無難だと思いますが。 |