`
springking
  • 浏览: 131813 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

jdk1.6环境下开发web service的简单例子

阅读更多

在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包。

分享到:
评论
2 楼 sdh88hf 2011-08-04  
怎么与spring整合,有列子请发我一个,谢谢;QQ:59 39 43 43 9
1 楼 xnxfire 2010-03-08  
看了许多springking的帖子,相当不错,赞个!

相关推荐

    spring-boot 整合 jsp jdk1.6版本 可用

    在本文中,我们将深入探讨如何在使用JDK 1.6版本的环境下,将Spring Boot与JSP(JavaServer Pages)进行有效整合。Spring Boot以其便捷的“开箱即用”特性深受开发者喜爱,但默认情况下它并不直接支持JSP视图解析。...

    web服务开发 使用jdk6注解 注解分析

    在 JDK 1.6 版本中,注解的引入极大地简化了 Web 服务的开发,使得开发者能够更高效地创建、部署和管理 Web 服务。 `@WebService` 是 Java Web Services (JAX-WS) 中的一个核心注解,用于声明一个类或接口作为 Web ...

    jdk6 开发webservice

    总结起来,JDK 6通过JAX-WS提供了便利的Web Service开发环境,通过注解简化了接口定义和服务实现。开发者可以轻松地创建和部署Web Service,并且通过WSDL生成客户端代码,实现跨平台、跨语言的交互。在实际项目中,...

    java webservices例子,java webservices,webservices

    在本示例中,我们将深入探讨如何在Java环境中创建和使用Web服务,特别是利用MyEclipse 8.6集成开发环境、JDK 1.6、Tomcat 7.x应用服务器以及JBoss 5.x应用服务器。 **1. Web服务基础** Web服务是基于SOAP(Simple ...

    webservice接口调用demo(含jar包和调用代码)

    【标题】"webservice接口调用demo(含jar包和调用代码)" 涉及的知识点主要集中在Web服务(Web Service)的概念、CXF框架的使用以及Java开发环境的配置上。首先,Web Service是一种基于开放标准的、平台和语言无关的...

    struts2 spring abatis 整合开发简单例子

    这个例子是基于MyEclipse 6.5、Tomcat 5.5和JDK 1.6的,展示了如何将这三个框架整合用于实际项目开发,特别是实现了分页和模糊查询功能。 首先,让我们详细了解这三个框架: 1. Struts2:这是一个基于MVC设计模式...

    java调用webservices

    在现代软件开发中,WebServices是一种重要的技术,它允许不同应用程序之间通过网络进行通信。Java作为一种广泛使用的编程语言,在调用WebServices方面提供了丰富的支持。本文将详细介绍如何使用Java来调用Web...

    Linux下配置jdk+tomcat【附:设置tomcat自动启动,jsvc方式】.pdf

    在Linux环境下配置JDK和Tomcat是服务器管理中常见的任务,尤其对于运行Java应用程序和Web服务至关重要。这里我们将详细介绍如何在CentOS 5.3操作系统上进行这些步骤,并附带了如何设置Tomcat自动启动的方法,使用...

    15分钟学会WEBSERVICE开发(JAVA)

    首先,确保你使用的是JDK 1.6或更高版本,因为Java 5可能不支持Web服务的简便实现。我们的目标是让程序A调用程序B中的方法C,通过Web服务作为通信桥梁。 1. 创建项目: 创建一个名为`Trans`的Java应用程序项目。...

    linux服务器配置JDK+Tomcat服务

    在这个例子中使用的版本为JDK 1.6。下载地址为: ``` http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u30-download-1377139.html ``` 下载的文件名为 `jdk-6u30-linux-i586.bin`。 2. **解压并...

    JAX-WS开发部署WebService

    生成Web服务客户端代码,可以使用JDK 1.6及更高版本提供的`wsimport`工具。在本地创建一个目录,如D:\jaxWSClient,并在其中创建一个子目录generate。然后,运行以下命令: ```bash Wsimport –s generate ...

    J2EEWEB开发教材

    - **3.11.2 Eclipse + MyEclipse 开发 helloapp 的 Web 应用**:介绍如何使用 Eclipse IDE 构建简单的 Web 应用。 **3.12 手工部署开发式目录结构** - 如何手动配置 Tomcat 来部署 Web 应用。 **3.13 利用 Tomcat ...

    jax-ws-webservice开发

    - **Java版本**:JDK 1.6 这些工具和环境为开发提供了坚实的基础,尤其对于初学者来说非常友好。 #### 二、开发WebService服务步骤 ##### 1. 利用MyEclipse创建Web工程 首先,在MyEclipse中创建一个新的Web项目。...

    Apache_cxf_学习笔记

    Apache CXF 是一个开源的Java框架,主要用于构建和开发服务导向架构(Service-Oriented Architecture, SOA)和Web服务。本学习笔记旨在提供对Apache CXF的基本理解、功能特性和实际操作指导。 **1. CXF 简介** 1.1...

    axis2-webservice新手教程实例

    通过本教程,你已经学习了如何设置开发环境、创建服务、生成客户端代码以及如何调用 Web 服务。随着进一步的学习,你将能够掌握更复杂的 Axis2 功能,如模块、拦截器、消息处理和安全特性。这将使你有能力应对各种 ...

    基于框架的Web开发-基于AspectJ的AOP.doc

    主要包括`aspectjweaver.jar`和`aspectjtools.jar`,这两个jar包根据JDK版本的不同,可能需要选择不同的版本,例如JDK6对应aspectj1.6,而JDK8则对应aspectj1.8。此外,还需要`spring-aspect.jar`,通常在Spring框架...

    Google.Android开发入门与实战

    从技术实现上,讲解了5个Android平台下的完整综合实例及源代码分析,分别是RSS阅读器、基于Google Map的个人GPS、豆瓣网(Web 2.0)客户端、在线音乐播放器、手机信息查看助手。《Android开发入门与实战》注重对实际...

    Axis高级编程

    #### 一、最简单的发布AXIS的Web Service **知识点概述:** 本节主要介绍如何使用Axis快速发布Web服务。通过简单的步骤和示例,帮助开发者理解发布Web服务的基本流程。 **知识点详述:** 1. **Web服务简介** - ...

Global site tag (gtag.js) - Google Analytics