参考文章WebService学习总结(三)——使用JDK开发WebService我的WebService学习是根据这位博主的文章学习的,很简单。有兴趣可以去看下
一、WebService的开发手段
- 使用jdk开发(1.6以上开发版本包括1.6)
- 使用CFX框架开发(工作中)
二、使用jdk开发WebService
2.1 开发WebService服务端
- 定义一个interface,使用@WebService注解标注接口,使用@WebMethod标注接口中定义的所有方法,上代码
package com.gss.web;
import javax.jws.WebMethod;
import javax.jws.WebService;
@WebService
public interface WeatherInterface {
@WebMethod
public String sayHello(String name);
}
- 编写实现类,使用@WebService注解标注类,并且实现所有的方法
package com.gss.web;
import javax.jws.WebService;
@WebService
public class WeatherImpl implements WeatherInterface {
@Override
public String sayHello(String name) {
String hello = "你好:" + name;
return hello;
}
}
3.使用Endpoint终端类发布webservice,上代码
package com.gss.web;
import javax.xml.ws.Endpoint;
public class WeatherServer {
public static void main(String[] args) {
System.out.println("----- 开始发布 ------");
Endpoint.publish("http://127.0.0.1:8909/weather",new WeatherImpl());
System.out.println("----- 发布成功 ------");
}
}
运行WeatherServer 类,就可以将编写好的WebService发布好了,WebService的访问URL是:http://127.0.0.1:8909/weather
这里使用了一个类用来发布webservice,如果是用web项目,可以使用监听器来启动webservice
package com.gss.listener;
import com.gss.ws.WatherServer;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.xml.ws.Endpoint;
public class WebServicePublishListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
Endpoint.publish("http://127.0.0.1:8081/weather",new WatherServer());
System.out.println("发布成功");
}
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
}
}
在web.xml添加监听器启动
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener<listener-class>
<listener>
然后启动tomcat便可以看到发布成功了。
发布成功的图片就不展示了!很简单
关于发布WebService主要就是通过javax.xml.ws.Endpoint类提供的静态方法publish进行发布,如果是普通的java项目,那么可以专门写一个类用于发布WebService,如果是Web项目,那么可以使用ServletContextListener或者Servlet进行发布。
2.2、 开发WebService客户端
- 借助jdk的wsimort.exe工具生成客户端代码,wsimort.exe工具位于jdk的bin 目录下面,如下图所示:
执行命令 : wsimport -keep url (url 为wsdl文件的路径),生成客户端代码
创建一个webservice客户端测试项目,如图所示:
打开cmd命令行 ,进入到src目录下面,执行“wsimport -keep url”
如果报没有这个命令的错误,那就是你的jdk的环境变量配置错误,自行百度。
如果没有报错,就成功生成了!
下图是生成的项目结构
wsimport工具帮我们生成了好多类,但是我们只需要关心ImplService和ServceImpl类
创建一个Client类,直接上代码把
package com.gss.client;
import com.gss.web.WeatherImpl;
import com.gss.web.WeatherImplService;
public class WSClient {
public static void main(String[] args) {
WeatherImplService factory = new WeatherImplService();
WeatherImpl wsImpl = factory.getWeatherImplPort();
String gss = wsImpl.sayHello("gss");
System.out.println("调用方法后返回的是:" + gss);
System.out.println("_______________________________");
}
}
执行结果就是你相当于访问了服务器端的方法并且返回了结果。
大概就这么多啦。