0
クライアントを作成せずに既存のWebサービスを呼び出す必要があります。私は以下のような動的クライアントを生成するためにAXIS Apacheを使用しました。URL引数を使用した動的Webサービス呼び出し
try {
Service service = new Service();
Call call = (Call) service.createCall();
call.setEncodingStyle("targetNameSpace");
call.setTargetEndpointAddress(new java.net.URL("WSDLURL"));
call.setOperationName(new QName("targetNameSpace", "runJob"));
call.addParameter("arg0", org.apache.axis.Constants.XSD_STRING, javax.xml.rpc.ParameterMode.IN);
call.setReturnType(org.apache.axis.Constants.XSD_STRING);
String result = (String) call.invoke(new Object[] {"--context=Tokens"});
log.info("result: {}", result);
if (!result.equals("0")){
throw new MosApplicationError("Job Failed ");
}
} catch (Exception e){
throw new MosApplicationError("Talend job failed", e);
}
私のwsdlは、リクエストとレスポンスの両方のオブジェクトに対して文字列以外を使用しません。このコードを実行すると、次のエラーが表示されます。
11:59:29,424 ERROR [Call] Exception:
org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize.
at org.apache.axis.encoding.ser.SimpleDeserializer.onStartChild(SimpleDeserializer.java:145)
at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1035)
at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:165)
at org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:1141)
at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:236)
at org.apache.axis.message.RPCElement.getParams(RPCElement.java:384)
at org.apache.axis.client.Call.invoke(Call.java:2467)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at com.nex.mos.job.core.TalendJob.executeJob(TalendJob.java:56)
at com.nex.mos.job.core.BaseJob.execute(BaseJob.java:69)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:525)
11:59:29,496 ERROR [MosErrorHandler] Error processing job in group 'Temporary' implemented by class 'class org.quartz.JobDetail'. Error message: Tal
end job failed
com.nex.mos.common.exception.MosApplicationError: Talend job failed
at com.nex.mos.job.core.TalendJob.executeJob(TalendJob.java:63)
at com.nex.mos.job.core.BaseJob.execute(BaseJob.java:69)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:525)
Caused by: org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize.
at org.apache.axis.AxisFault.makeFault(AxisFault.java:101)
at org.apache.axis.client.Call.invoke(Call.java:2470)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at com.nex.mos.job.core.TalendJob.executeJob(TalendJob.java:56)
Caused by: org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize.
at org.apache.axis.encoding.ser.SimpleDeserializer.onStartChild(SimpleDeserializer.java:145)
at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1035)
at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:165)
at org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:1141)
at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:236)
at org.apache.axis.message.RPCElement.getParams(RPCElement.java:384)
at org.apache.axis.client.Call.invoke(Call.java:2467)
誰もが考えていますか?軸のバージョンは1.4とjdk 1.6
ありがとうございます。