关于调用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即可