天天看點

Service調用

使用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端定義的接口代碼  

Service調用
  1. import javax.jws.WebService;  
  2. @WebService(name="DataSynInf")  
  3. public interface DataSynInf {  
  4.         public String synMaterialAndBom(String xml);  
  5. }  

Java axis調用端代碼  

Service調用
  1. public static void testDemo() {  
  2.                 try {  
  3.                         String endpoint = " http://172.16.81.65:8080/cxfservices/InterfacePort";  
  4.                         // 調用過程  
  5.                         Service service = new Service();  
  6.                         Call call = (Call) service.createCall();  
  7.                         call.setTargetEndpointAddress(new java.net.URL(endpoint));  
  8.                         call.setOperationName("synMaterialAndBom");// WSDL裡面描述的操作名稱  
  9.                         call.addParameter("xml",  
  10.                                         org.apache.axis.encoding.XMLType.XSD_STRING,  
  11.                                         javax.xml.rpc.ParameterMode.IN);// 操作的參數  
  12.                         call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);// 設定傳回類型  
  13.                         call.setUseSOAPAction(true);  
  14.                         // 給方法傳遞參數,并且調用方法  
  15.                         String temp = "good";  
  16.                         Object[] obj = new Object[] { temp };  
  17.                         String result = (String) call.invoke(obj);  
  18.                         System.out.println("Result is : " + result);  
  19.                 } catch (Exception e) {  
  20.                         e.printStackTrace();  
  21.                 }  
  22.         }