eclipse中使用jax-ws进行 webservice开发

java的JRE中封装了JAX-WS的jar包,1.6以上可以直接使用,很方便.

首先创建servcie类

import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;

@WebService
@SOAPBinding(style=Style.RPC)
public interface Method1Service {
	@WebMethod
	int getCount(String Money);
}


然后创建逻辑类,继承刚创建的servcie接口


import javax.jws.WebService;

@WebService(endpointInterface="类在项目中的位置(带包名)")
public class Method1 implements Method1Service {

	@Override
	public int getCount(String Money) {
		// 业务逻辑
		return 5;
	}

}

定义publisher(我称为发布类,我把这个接口作为一个监听器随项目一起启动了)


import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.xml.ws.Endpoint;
//实现监听器接口
public class Publisher implements ServletContextListener  {

	@Override
	public void contextDestroyed(ServletContextEvent arg0) {

	}

	@Override
	public void contextInitialized(ServletContextEvent arg0) {
		System.out.println("Service Start");
		// TODO Auto-generated method stub
		//endpoint发布,前面的参数是发布地址,后面的是逻辑类	
		Endpoint.publish("http://localhost:8081/aswebservice",new Method1());
	}
}
项目中的web.xml配置好监听器,这样启动项目时就会将这个webservice启动了,通过"发布地址?wsdl"可以访问接口说明文件.

http://localhost:8081/aswebservice?wsdl

调用接口要先生成代理类,Myeclipse中集成了jax-ws的客户端程序,可以直接通过wsdl文档生成,eclipse中没有集成,我们需要通过cmd控制台生成对应的代理类


扫描二维码关注公众号,回复: 4767944 查看本文章

需要在cmd控制台中输入这一串代码,-p后面是你要生成代理类的位置,生成之后可以去这个位置找代理文件,-keep后面的是你wsdl文件的地址


 出现这个没有报错说明代理类已经生成成功


这些.java文件都是代理类的源文件,导入项目中就可以调用了

import java.net.MalformedURLException;
import java.net.URL;

import javax.xml.namespace.QName;
import javax.xml.ws.Service;

public class client {
	public static Method1 getClient(){
	 URL url = null;
	try {
		url = new URL("http://localhost:8081/aswebservice?wsdl");
	} catch (MalformedURLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}  
     // 第一个参数是服务的URI  
     // 第二个参数是在WSDL发布的服务名  
     QName qname = new QName("http://webservice.as.shudun.com/","Method1Service");  
     // 创建服务  
     Service service = Service.create(url, qname);  
     // 提取端点接口,服务“端口”。  
     Method1 eif = service.getPort(Method1.class);
	return eif;  
	}
}
这是我写的工具类,用来返回客户端的,直接通过客户端调用就可以使用接口中的方法了

接口中的方法是传入参数后返回固定值5

调用两次的输出结果:



猜你喜欢

转载自blog.csdn.net/w741998232/article/details/53258646
今日推荐