关于调用java中的web服务wsdl

    例如

 1、webservice 地址 http://localhost:8080/ca3/services/caSynrochnized?wsdl

  2、调用方法原型

public  int addUser( String userName,String userAge);

  • import java.util.Date; 
  • import java.text.DateFormat; 
  • import org.apache.axis.client.Call; 
  • import org.apache.axis.client.Service; 
  • import javax.xml.namespace.QName; 
  • import java.lang.Integer; 
  • import javax.xml.rpc.ParameterMode; 
  •   
  • public class caClient { 
  •              
  •        public static void main(String[] args) { 
  •   
  •               try { 
  •                      //定义调用的远程路径
  •                      String endpoint = "http://localhost:8080/ca3/services/caSynrochnized?wsdl"; 
  •                     //创建服务对象
  •                      Service service = new Service(); 
  •                     //根据服务对象创建访问对象
  •                      Call call = (Call) service.createCall(); 
  •                      //设置访问目标
  •                      call.setTargetEndpointAddress(endpoint); 
  •                     //设置wsdl中提供的可以远程调用的方法名称
  •                      call.setOperationName("addUser");
  •                      //设置远程调用方法需要的参数,当有多个参数时按顺序添加
  •                      //参数1为  远程方法的参数名
  •                      //参数2为  远程方法参数的类型
  •                      //参数3为   远程方法参数的模式  例如是输入参数= javax.xml.rpc.ParameterMode.IN ,输出参数= javax.xml.rpc.ParameterMode.IN
  •                      call.addParameter("userName", org.apache.axis.encoding.XMLType.XSD_String, 
  •                                    javax.xml.rpc.ParameterMode.IN  );
  •                      call.addParameter("userAge", org.apache.axis.encoding.XMLType.XSD_String, 

                                      javax.xml.rpc.ParameterMode.IN);

  •                    //设置远程调用方法返回的类型
  •                      call.setReturnType(org.apache.axis.encoding.XMLType.XSD_INT);
  •                      String userName= "测试人员";
  •                      String userAge="19"; 
  •                     //创建并初始化数组对象
  •                     Object[] os=new Object[]{userName,userAge}
  •                    //开始远程调用方法且传入需要的参数获得返回的结果
  •                      String result = (String)call.invoke(os);
  •                      //输出返回的结果
  •                      System.out.println("result is "+result); 
  •               } 
  •               catch (Exception e) { 
  •                      System.err.println(e.toString()); 
  •               } 
  •        } 

在使用上面的案例时,可能在log4j的输出信息中出现org.apache.axis.ConfigurationException: No service named  is available异常,但调用远程方法却又是正确的且能得到访问结果

解决方法:在log4j的配置文件中加上这样一句话log4j.logger.org.apache.axis.ConfigurationException= INFO即可

posted @ 2014-12-03 09:47  大哥别动手,是我  阅读(205)  评论(0编辑  收藏  举报