使用axis(版本1.4)調用cxf服務端一直調用不成功,郁悶了一上午啊。經過google之後,嘻嘻~終于得以解決,講述一下我的代碼和解決過程
---使用了bboss mvc內建的cxf作為ws服務端
axis需要的jar包:axis.jar,axis-ant.jar,commons-discovery-0.2.jar,commons-logging-1.0.4.jar,jaxrpc.jar,log4j-1.2.8.jar,saaj.jar,wsdl4j-1.5.1.jar
Java cxf端定義的接口代碼
- import javax.jws.WebService;
- @WebService(name="DataSynInf")
- public interface DataSynInf {
- public String synMaterialAndBom(String xml);
- }
Java axis調用端代碼
- public static void testDemo() {
- try {
- String endpoint = " http://172.16.81.65:8080/cxfservices/InterfacePort";
- // 調用過程
- Service service = new Service();
- Call call = (Call) service.createCall();
- call.setTargetEndpointAddress(new java.net.URL(endpoint));
- call.setOperationName("synMaterialAndBom");// WSDL裡面描述的操作名稱
- call.addParameter("xml",
- org.apache.axis.encoding.XMLType.XSD_STRING,
- javax.xml.rpc.ParameterMode.IN);// 操作的參數
- call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);// 設定傳回類型
- call.setUseSOAPAction(true);
- // 給方法傳遞參數,并且調用方法
- String temp = "good";
- Object[] obj = new Object[] { temp };
- String result = (String) call.invoke(obj);
- System.out.println("Result is : " + result);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }