1.在JAVAEE的环境下新建一web工程项目,之后在src下新建一个类如HelloWorld.java,内容如下:
public class HelloWorld {
public String querySingle(String userName_, String password_, String type_, String param_){
String resultStr="Hello," + userName_ + "," + password_ + ", " + type_ + ", " + param_;
System.out.println(resultStr);
return resultStr;
}
}
2.这个类将要扮演webservice服务端的角色,而querySingle这一方法即为webservice服务端所提供的接口方法。接下来创建webservice服务端,选择HelloWorld.java类右键新建web service
点击下一步
继续下一步,直到完成。
3.webservice创建完毕后会发现WEB-INF下的lib目录中增加了6个AXIS的jar包,和其它一些自动生成的相关配置文件;
4.测试web service:右击HelloWorld.wsdl---Web Services---Test with Web Services Explorer---点击方法名querySingle----输入参数abc,def,ghi,jkl---点go.此时会发现控制台输出Hello,abc,def, ghi, jkl,说明测试成功。WebService没有问题。
5.编写客户端调用类,利用AXIS调用HelloWorld.代码如下:
import java.rmi.RemoteException;
import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.ServiceException;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
public class HelloWorldTest {
public String invokeRemoteFuc() {
// 远程调用路径
String endpoint = "http://localhost:8080/WebServiceTest/services/HelloWorld";
String result = "call failed!";
Service service = new Service();
Call call;
try {
call = (Call) service.createCall();
call.setTargetEndpointAddress(endpoint);
// 调用的方法名
call.setOperationName("querySingle");
// 设置参数名
call.addParameter("userName_", // 参数名
XMLType.XSD_STRING, // 参数类型:String
ParameterMode.IN); // 参数模式:'IN' or 'OUT'
call.addParameter("password_", // 参数名
XMLType.XSD_STRING, // 参数类型:String
ParameterMode.IN); // 参数模式:'IN' or 'OUT'
call.addParameter("type_", // 参数名
XMLType.XSD_STRING, // 参数类型:String
ParameterMode.IN); // 参数模式:'IN' or 'OUT'
call.addParameter("param_", // 参数名
XMLType.XSD_STRING, // 参数类型:String
ParameterMode.IN); // 参数模式:'IN' or 'OUT'
// 设置返回值类型
call.setReturnType(XMLType.XSD_STRING); // 返回值类型:String
String userName_ = "qiangjiyi";
String password_ = "123";
String type_ = "456";
String param_ = "789";
result = (String) call.invoke(new Object[] { userName_, password_, type_, param_ });// 远程调用
} catch (ServiceException e) {
e.printStackTrace();
} catch (RemoteException e) {
e.printStackTrace();
}
return result;
}
// 测试
public static void main(String[] args) {
HelloWorldTest test = new HelloWorldTest();
String result = test.invokeRemoteFuc();
System.out.println(result);
}
}
(注意:1、设置方法名和参数名的时候,必须与被调用的WebService保持一致;2、传递的参数需封装到一个Object数组里)
6.测试:选中HelloWorldTest右键 ---Run as---Java application,如果发现控制台正确输出Hello,qiangjiyi,123, 456, 789.说明测试成功。 至此一个简单的webservice示例就算完事。
温馨提示:附件中包含有axis所需的jar包,希望可以帮助各位新手入门!