目前webservice在各个行业中的应用都十分的火。市面上目前流行的关于webservice的框架也有很多,今天我们不套用外部的框架,而是通过纯java来一步一步实现webservice的服务端的创建和客户端的访问。
一、创建webservice的服务器端
整体步骤如下:
1、创建服务的接口
2、创建服务的实现类
3、发布服务
4、验证服务是否发布成功
二、创建webservice的客户端
整体步骤如下:
1、通过java.net.URL定义连接webservice服务端的URL地址
2、通过javax.xml.namespace.QName设置命名空间和本地服务名称
3、通过javax.xml.ws.Service创建一个从客户端到服务器端的连接
4、通过javax.xml.ws.Service的getPort获取接口类
5、通过接口访问相应的方法
三、案例演示
(一)、创建webservice的服务器端
1、创建接口类
通过java的注解@WebService标明此接口是一个WebService接口
package com.sample.server;
import javax.jws.WebMethod;
import javax.jws.WebService;
import com.sample.bean.Student;
@WebService
public interface MyService {
@WebMethod
public String getStuName(String id);
public Student getStuInfo(String id);
}
2、创建接口的实现类
这里需要注意,一定要设置endpointInterface。它的值为接口的全称,一定要带上包名。
package com.sample.server;
import java.util.Date;
import javax.jws.WebService;
import com.sample.bean.Student;
@WebService(endpointInterface="com.sample.server.MyService")
public class MyServiceImpl implements MyService {
@Override
public String getStuName(String id) {
if("1".equals(id)) {
System.out.println("getStuName");
return "张三" ;
}
return "";
}
@Override
public Student getStuInfo(String id) {
Student student = new Student();
if("1".equals(id)) {
System.out.println("getStuInfo");
student.setId("1");
student.setName("张三");
student.setPassword("123456");
student.setAge(12);
student.setMakedate(new Date());
}
return student;
}
}
3、发布服务
可以在这里创建一个Server类。通过Endpoint的publish方法发布服务,代码中的http://localhost:8082/stu为此服务的发布地址,new MyServiceImpl()表示服务的实现类。运行main方法即可发布成功,如果发现有错误跑出,查看一下端口号是否可用。
package com.sample.server;
import javax.xml.ws.Endpoint;
public class Server {
public static void main(String[] args) {
Endpoint.publish("http://localhost:8082/stu", new MyServiceImpl());
}
}
4、验证服务是否发布成功
在浏览器中输入http://localhost:8082/stu,如果出现以下内容表示服务已经发布成功
:
Web Services
No JAX-WS context information available.
在浏览器中输入http://localhost:8082/stu?wsdl就可以查看生成的wsdl文件,我的内容如下:
<?xml version="1.0" encoding="UTF-8" ?>
- <!-- Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.1.6 in JDK 6.
-->
- <!-- Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.1.6 in JDK 6.
-->
- <definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://server.sample.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://server.sample.com/" name="MyServiceImplService">
- <types>
- <xsd:schema>
<xsd:import namespace="http://server.sample.com/" schemaLocation="http://localhost:8082/stu?xsd=1" />
</xsd:schema>
</types>
- <message name="getStuName">
<part name="parameters" element="tns:getStuName" />
</message>
- <message name="getStuNameResponse">
<part name="parameters" element="tns:getStuNameResponse" />
</message>
- <message name="getStuInfo">
<part name="parameters" element="tns:getStuInfo" />
</message>
- <message name="getStuInfoResponse">
<part name="parameters" element="tns:getStuInfoResponse" />
</message>
- <portType name="MyService">
- <operation name="getStuName">
<input message="tns:getStuName" />
<output message="tns:getStuNameResponse" />
</operation>
- <operation name="getStuInfo">
<input message="tns:getStuInfo" />
<output message="tns:getStuInfoResponse" />
</operation>
</portType>
- <binding name="MyServiceImplPortBinding" type="tns:MyService">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
- <operation name="getStuName">
<soap:operation soapAction="" />
- <input>
<soap:body use="literal" />
</input>
- <output>
<soap:body use="literal" />
</output>
</operation>
- <operation name="getStuInfo">
<soap:operation soapAction="" />
- <input>
<soap:body use="literal" />
</input>
- <output>
<soap:body use="literal" />
</output>
</operation>
</binding>
- <service name="MyServiceImplService">
- <port name="MyServiceImplPort" binding="tns:MyServiceImplPortBinding">
<soap:address location="http://localhost:8082/stu" />
</port>
</service>
</definitions>
(二)、创建客户端
1、创建客户端类MyClient
这里解释一下QName的两个参数:
第一个参数值是上面生成的wsdl文件中targetNamespace的值,我的为"http://server.sample.com/"。这个值实际上就是包名的反转。
第二个参数为:
name="MyServiceImplService">
运行此方法可以在控制台打印出getStuName,表示访问成功。
package com.sample.client;
import java.net.MalformedURLException;
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
import com.sample.server.MyService;
public class MyClient {
public static void main(String[] args) throws MalformedURLException {
String address = "http://localhost:8082/stu?wsdl";
URL url = new URL(address);
QName qname = new QName("http://server.sample.com/", "MyServiceImplService");
Service service = Service.create(url,qname);
MyService tMyservice = service.getPort(MyService.class);
tMyservice.getStuName("1");
}
}
(三)、遗留问题
上面这种访问方式,我们会发现在客户端中要依赖MyService这个类,而实际工作中,我们根本无法获取到MyService,服务商也不可能为我们提供这个接口,所以,我们将在下一节中通过wsimport来解决这个问题。
分享到:
相关推荐
NULL 博文链接:https://liuyunlong1229.iteye.com/blog/1678559
基于jax-ws 实现的web service client和server端的demo程序。 注:如果使用的是 myeclipse 时 server 部署到tomcat 启动的时候会报错 解决办法:找到myeclipse安装目录下的 plugins 目录里 查找 webservices-rt.jar,...
MyEclipse8_0中使用 JAX-WS 部署 WebService 实例 - 外衣 - 博客频道 - CSDN_NET.mht
利用myeclipse创建的 jax-ws demo
JAX-WS方式开发和部署webservice应用,JAX-WS方式开发和部署webservice应用,JAX-WS方式开发和部署webservice应用,JAX-WS方式开发和部署webservice应用,JAX-WS方式开发和部署webservice应用
webService部署tomcat需要的jax-ws 的完整jar包
使用JAX-WS(JWS)发布WebService 使用myeclipse开发java的webservice的两种方式 方式一: (此方式只能作为调试,有以下bug:jdk1.6u17?以下编译器不支持以Endpoint.publish方式发布document方式的soap,必须在...
JAX-WS + Spring 实现webService示例
MyEclipse基于JAX-WS开发Webservice+WebserviceClient客户端调用.zip
本人自学JAX-WS笔记和简单例子,文档标题结构如下: JAX-WS使用教程 1、JAX-WS概述 2、创建Web Service 2.1 从java开始 2.1.1 运行wsgen 2.1.2 生成的WSDL和XSD 2.1.3 目录结构 2.2 从WSDL开始 2.2.1 ...
JAX-WS + Spring 实现webService示例.docxJAX-WS + Spring 实现webService示例.docx
jax-ws webservice完整demo,包含所有jax-ws 2.2jar包。
使用 Eclipse JavaEE 开发 WebService 时,若选择手动创建原生的JAX-WS服务,需要导入此jar资源(教程详见我的博文https://blog.csdn.net/weixin_50604409/article/details/116399530)。 如果您同时装有 IntelliJ ...
亲测可用,Jax-ws所需要的JAR包,拷贝到tomcat安装路径的lib里,实现了webservice发布到tomcat,赞!
以jdk1.6以上自带的jax-ws来发布webservice,压缩包里包含服务端和客户端,下载导入即可启动运行测试,有疑问的话欢迎咨询哈
欢迎下载JAX-WS实现WebService.zip。本压缩文件介绍了如何使用JAX-WS技术实现WebService 参考博客:http://blog.csdn.net/gaohuanjie/article/details/50523517
Java 基于第三方插件实现WebService实在麻烦,尤其是要添加几十M的Jar包...还好,自从JDK 1.6开始,Java自身已经支持WebSeervice的开发即JAX-WS,附件是一个简单的示例,供入门参考。注意,JDK环境要求1.6及以上版本。
MyEclipse中创建WebService的方法文档
公司代码实现,简单的webservice服务 发布,实现客户端的调用。
本人自学JAX-WS笔记和简单例子,文档标题结构如下: JAX-WS使用教程 1、JAX-WS概述 2、创建Web Service 2.1 从java开始 2.1.1 运行wsgen 2.1.2 生成的WSDL和XSD 2.1.3 目录结构 2.2 从WSDL开始 ...