一 . 发布WebService 服务
a.在类上或者相应类的接口或者抽象类上添加注解@WebService
比较好的方式可以这样,只发布一个服务即可
/** * 提供服务的统一继承类 * @author vtstar * */ public abstract class AbstractWS { public abstract String execute(String param) ; } /** * 业务实现类 * @author vtstar */ public class Good extends AbstractWS { @Override public String execute(String param) { // 业务逻辑操作 //...... return "Good class execute : param ->" + param; } } /** * 业务实现类 * @author vtstar */ public class Good extends AbstractWS { @Override public String execute(String param) { // 业务逻辑操作 //...... return "Good class execute : param ->" + param; } } /** * 业务实现类 * @author vtstar */ public class Hello extends AbstractWS { @Override public String execute(String param) { // 业务逻辑操作 //...... return "Hello class execute : param ->" + param; } } /** * 业务实现类 * @author vtstar */ public class Nice extends AbstractWS { @Override public String execute(String param) { // 业务逻辑操作 //...... return "Nice class execute : param ->" + param; } } /** * webservice 服务类 * @author vtstar * */ @WebService public class WSServer{ HashMap<String, AbstractWS> hashMap = new HashMap<String, AbstractWS>(); private WSServer(){ hashMap.put("hello", new Hello()); hashMap.put("nice", new Nice()); hashMap.put("good", new Good()); } public String execBusinessMethod (@WebParam(name = "businessType")String businessType,@WebParam(name = "businessParam")String businessParam){ //数据校验.. //异常捕捉.. //错误信息返回数据 AbstractWS abstractWS = hashMap.get(businessType); String execute = abstractWS.execute(businessType); return execute; } /** * 发布服务 * @param args */ @WebMethod(exclude=true) public static void main(String[] args) { System.out.println("发布webservice服务start!"); Endpoint.publish("http://127.0.0.1:8899/zl", new WSServer()); System.out.println("发布webservice服务success!"); } }
b.发布服务 Endpoint.publish("http://127.0.0.1:8800/hello", new HelloServiceImpl());
二 . 引用服务
方式一:生成代码引用服务
生成即可.
两种方式可以调用代码:
URL url = new URL("http://127.0.0.1:8899/zl?wsdl"); QName qname=new QName("http://zl.com/","WSServerService"); Service service=Service.create(url, qname); WSServer ms=service.getPort(WSServer.class); String hello = ms.execBusinessMethod("nice", "123123"); System.out.println(hello); WSServerProxy wsServerProxy = new WSServerProxy(); String execBusinessMethod = wsServerProxy.execBusinessMethod("nice", "123213"); System.out.println(execBusinessMethod);
方式二:
//new 一个服务 Service sv = new Service(); //创建一个call对象 Call call = (Call) sv.createCall(); //设置要调用的接口地址 call.setTargetEndpointAddress(new URL("http://127.0.0.1:8899/hello")); //设置要调用的接口方法 call.setOperationName(new QName("getHello")); //设置参数 第二个参数表示String类型,第三个参数表示入参 call.addParameter("str", org.apache.axis.encoding.XMLType.XSD_STRING,javax.xml.rpc.ParameterMode.IN); //返回参数类型 call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING); //开始调用方法并返回相应数据信息,以xml格式的字符串返回,也可以json格式主要看对方用什么方式返回 Object result = call.invoke(new Object[]{"nice"}); System.out.println(result);//打印字符串