jdk1.6环境下开发web service的简单例子
2014-10-25 09:56
351 查看
在jdk1.6环境下开发web service是非常方便,因为jdk1.6已经集成了JAX-WS,大大减低了开发中的编码难度。
首先定义服务接口
package com.lovo;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;
import javax.jws.soap.SOAPBinding.Use;
import com.lovo.po.Book;
import com.lovo.po.Person;
@WebService
@SOAPBinding(style = Style.DOCUMENT,use = Use.LITERAL)
public interface TestService {
@WebMethod
public Person say(Book s);
}
@SOAPBinding(style = Style.DOCUMENT,use = Use.LITERAL) 指明绑定方式为DOCUMENT。
按照WS-I指导原则,use属性的取值选择literal。
然后实现服务接口
package com.lovo;
import java.util.ArrayList;
import java.util.List;
import javax.jws.WebService;
import com.lovo.po.Book;
import com.lovo.po.Person;
@WebService(endpointInterface="com.lovo.TestService")
public class TestServiceImpl implements TestService{
public Person say(Book s){
Person p = new Person();
p.setId(4);
p.setName(s.getName() + "........");
List<Book> list = new ArrayList<Book>();
list.add(new Book(1,"w"));
list.add(new Book(2,"s"));
list.add(new Book(3,"t"));
p.setBookList(list);
Book b = new Book(4,"测试");
p.setBook(s);
return p;
}
}
在实现接口时通过
@WebService(endpointInterface="com.lovo.TestService")指定服务接口的全类名。
在接口和实现类中出现的Peson和Book是2个pojo。
package com.lovo.po;
public class Book {
public Book(){
}
public Book(int i,String n){
this.id = i;
this.name = n;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
private int id;
private String name;
}
package com.lovo.po;
import java.util.List;
public class Person {
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<Book> getBookList() {
return bookList;
}
public void setBookList(List<Book> bookList) {
this.bookList = bookList;
}
public Book getBook() {
return book;
}
public void setBook(Book book) {
this.book = book;
}
private int id;
private String name;
private List<Book> bookList;
private Book book;
}
在Person类中,持有Book类的一个引用和1个Book类的集合属性。
整个服务端的开发就完成了,可以用EndPoint发布后查看wsdl。也可以发布到web容器中,例如:Tomcat
如何将上述代码发布到Tomcat中?
web.xml中需要添加以下内容
<listener>
<listener-class>
com.sun.xml.ws.transport.http.servlet.WSServletContextListener
</listener-class>
</listener>
<servlet>
<servlet-name>TestService</servlet-name>
<servlet-class>
com.sun.xml.ws.transport.http.servlet.WSServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TestService</servlet-name>
<url-pattern>/lovo</url-pattern>
</servlet-mapping>
我的url映射为/lovo
另外在web.xml的同级目录下(也就是WEB-INF)需要定义一个sun-specific的配置文件,因为WSServletContextListener这个监听器会读取这个配置文件。文件命名为sun-jaxws.xml,内容:
<?xml version="1.0" encoding="UTF-8"?>
<endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime" version="2.0">
<endpoint name="TestService" implementation="com.lovo.TestServiceImpl" url-pattern="/lovo" />
</endpoints>
实际上就是定义了服务名和服务的实现以及url映射。
在这个文件中可以指定多个服务端点。
现在发布项目到Tomcat中完成服务端部署。
但是在Tomcat启动过程中会大量出现ClassNotFoundException,在Tomcat6.0环境下,需要导入一些jar包。
以下是我导入的jar包
jaxb-impl-2.1.12.jar
jaxws-rt-2.1.4.jar
stax-ex-1.2.jar
streambuffer-0.8.jar
现在Tomcat,就可以正常启动了,同时生成了一些JAX-B工件,通过http://localhost:8888/service/lovo?wsdl来检查服务是否部署成功。
至此服务端开发结束。
在已知wsdl文件的情况下,利用jdk1.6中的wsimport工具,生成客户端支持代码非常方便。
例如:wsimport -keep -p service.client http://localhost:8888/service/lovo?wsdl
表示在当前目录下,依据http://localhost:8888/service/lovo?wsdl的内容,生成包名为service.client的java文件和class文件。
利用wsimport工具生成的客户端支持代码可以快速的进行客户端开发。
在这个例子中,通过
TestServiceImplService ss = new TestServiceImplService();
TestService service = ss.getTestServiceImplPort();
2行代码获取服务接口的引用,从而可以开始方法调用。
最后推荐一个jar包下载的好地方,http://www.jarvana.com/jarvana/。
在已知类名的情况下,可以找到相应的jar包。
首先定义服务接口
package com.lovo;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;
import javax.jws.soap.SOAPBinding.Use;
import com.lovo.po.Book;
import com.lovo.po.Person;
@WebService
@SOAPBinding(style = Style.DOCUMENT,use = Use.LITERAL)
public interface TestService {
@WebMethod
public Person say(Book s);
}
@SOAPBinding(style = Style.DOCUMENT,use = Use.LITERAL) 指明绑定方式为DOCUMENT。
按照WS-I指导原则,use属性的取值选择literal。
然后实现服务接口
package com.lovo;
import java.util.ArrayList;
import java.util.List;
import javax.jws.WebService;
import com.lovo.po.Book;
import com.lovo.po.Person;
@WebService(endpointInterface="com.lovo.TestService")
public class TestServiceImpl implements TestService{
public Person say(Book s){
Person p = new Person();
p.setId(4);
p.setName(s.getName() + "........");
List<Book> list = new ArrayList<Book>();
list.add(new Book(1,"w"));
list.add(new Book(2,"s"));
list.add(new Book(3,"t"));
p.setBookList(list);
Book b = new Book(4,"测试");
p.setBook(s);
return p;
}
}
在实现接口时通过
@WebService(endpointInterface="com.lovo.TestService")指定服务接口的全类名。
在接口和实现类中出现的Peson和Book是2个pojo。
package com.lovo.po;
public class Book {
public Book(){
}
public Book(int i,String n){
this.id = i;
this.name = n;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
private int id;
private String name;
}
package com.lovo.po;
import java.util.List;
public class Person {
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<Book> getBookList() {
return bookList;
}
public void setBookList(List<Book> bookList) {
this.bookList = bookList;
}
public Book getBook() {
return book;
}
public void setBook(Book book) {
this.book = book;
}
private int id;
private String name;
private List<Book> bookList;
private Book book;
}
在Person类中,持有Book类的一个引用和1个Book类的集合属性。
整个服务端的开发就完成了,可以用EndPoint发布后查看wsdl。也可以发布到web容器中,例如:Tomcat
如何将上述代码发布到Tomcat中?
web.xml中需要添加以下内容
<listener>
<listener-class>
com.sun.xml.ws.transport.http.servlet.WSServletContextListener
</listener-class>
</listener>
<servlet>
<servlet-name>TestService</servlet-name>
<servlet-class>
com.sun.xml.ws.transport.http.servlet.WSServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TestService</servlet-name>
<url-pattern>/lovo</url-pattern>
</servlet-mapping>
我的url映射为/lovo
另外在web.xml的同级目录下(也就是WEB-INF)需要定义一个sun-specific的配置文件,因为WSServletContextListener这个监听器会读取这个配置文件。文件命名为sun-jaxws.xml,内容:
<?xml version="1.0" encoding="UTF-8"?>
<endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime" version="2.0">
<endpoint name="TestService" implementation="com.lovo.TestServiceImpl" url-pattern="/lovo" />
</endpoints>
实际上就是定义了服务名和服务的实现以及url映射。
在这个文件中可以指定多个服务端点。
现在发布项目到Tomcat中完成服务端部署。
但是在Tomcat启动过程中会大量出现ClassNotFoundException,在Tomcat6.0环境下,需要导入一些jar包。
以下是我导入的jar包
jaxb-impl-2.1.12.jar
jaxws-rt-2.1.4.jar
stax-ex-1.2.jar
streambuffer-0.8.jar
现在Tomcat,就可以正常启动了,同时生成了一些JAX-B工件,通过http://localhost:8888/service/lovo?wsdl来检查服务是否部署成功。
至此服务端开发结束。
在已知wsdl文件的情况下,利用jdk1.6中的wsimport工具,生成客户端支持代码非常方便。
例如:wsimport -keep -p service.client http://localhost:8888/service/lovo?wsdl
表示在当前目录下,依据http://localhost:8888/service/lovo?wsdl的内容,生成包名为service.client的java文件和class文件。
利用wsimport工具生成的客户端支持代码可以快速的进行客户端开发。
在这个例子中,通过
TestServiceImplService ss = new TestServiceImplService();
TestService service = ss.getTestServiceImplPort();
2行代码获取服务接口的引用,从而可以开始方法调用。
最后推荐一个jar包下载的好地方,http://www.jarvana.com/jarvana/。
在已知类名的情况下,可以找到相应的jar包。
相关文章推荐
- jdk1.6环境下开发web service的简单例子
- [图解教程] Axis2与Eclipse整合开发Web Service之一:简单的计算服务例子
- 转:Web Service入门开发简单例子--很详尽
- Axis2与Eclipse整合开发Web Service之一:简单的计算服务例子
- Android应用开发 - JAVA环境变量设置 JDK1.6配置
- Java jdk1.6+ 最简单的环境变量设置方法
- [图解教程] Axis2与Eclipse整合开发Web Service之一:简单的计算服务例子
- 使用Java开发一个非常简单的Web Service例子
- 利用jdk1.6的jax-ws 学习简单的web service
- [图解教程] Axis2与Eclipse整合开发Web Service之一:简单的计算服务例子
- myeclipse中配置JRE配置 Tomcat7.0、JDK1.6、Myeclipse6.5开发环境配置
- Axis2与Eclipse整合开发Web Service:简单的计算服务例子
- Axis开发Web Service简单例子
- [图解教程] Axis2与Eclipse整合开发Web Service之一:简单的计算服务例子
- web service1简单的例子用jdk自带的类
- Web Services学习之2——Axis2与Eclipse整合开发Web Service之一:简单的计算服务例子
- [图解教程] Axis2与Eclipse整合开发Web Service之一:简单的计算服务例子
- 在linux系统下搭建java开发环境(jdk1.6+tomcat6.0+eclipse3.2+myeclipse5.2)的过程
- Web Service入门开发简单例子--很详尽
- [图解教程] Axis2与Eclipse整合开发Web Service之一:简单的计算服务例子