`
longgangbai
  • 浏览: 7340091 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JDK1.6使用注解轻松开发Web服务

阅读更多

       在项目中使用使用Ws服务,同时采用JDK1.6于是学习一下JDK1.6发布Web服务的应用开发、发现使用JDK1.6注解ws方便简单。

    对Webservice的支持是JavaSE6的一大新特性。我们知道,想要发布一个Webservice,首先要创建相关的业务逻辑类,然后把这些业务逻辑类部署到SOAP服务器上,生成客户端访问的代码,最后部署到客户端进行测试。这是创建一个简单Webservice的主要步骤,事实上,部署和发布Webservice要复杂的多。而JavaSE6中实现了一个内置的轻量级SOAP服务器,我们可以把Webservice部署到Java平台中,并进行简单的测试。另外,JavaSE 6中加入了@Webservice等注解(Annotation),有了这些注解,创建Webservice变得十分简单。本实验将在JavaSE 6中创建和发布一个Webservice,并通过Netbeans创建Webservice客户端对已发布的Service进行测试,通过实验来理解JavaSE 6对Webservice的支持。

软件需求:
jdk 1.6以上版本

 

下面首先看看web服务的代码,然后讲解web服务的各种信息和注意事项;

^_^

 

开发的代码如下:

定义web服务的接口类

package cn.com.unutrip.spring.ws;

import javax.jws.WebService;
/**
 *
 * 此接口定义Web服务
 * JDK1.6注解开发Ws服务
 * @author longgangbai
 *
 */
public interface IRemoteService {
 public String hello(String username);
}

 

web服务的实现类:

 

package cn.com.unutrip.spring.ws;

import java.util.Date;

import javax.jws.Oneway;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.soap.SOAPBinding;
/**
 *
 *
 * JDK1.6注解开发Ws服务
 * @author longgangbai
 *
 */

@WebService(serviceName = "REMOTESERVICE", targetNamespace = "http://cn.unutrip.com/RemoteService")
@SOAPBinding(style = SOAPBinding.Style.RPC)//默认的方式
public class RemoteServiceImpl implements IRemoteService {

/**

*

*

*/

 

 

 @WebResult(name = "Greetings")//注解返回的结果信息,可以使用默认值
 @WebMethod  //注解web服务的方法
 public String hello(@WebParam(name = "MyName")
 String name) {
  return "Hello," + name;
 }

 

 

 @Oneway  //没有返回值
 @WebMethod(action = "printSystemTime", operationName = "printSystemTime")
 public void printTime() {
  System.out.println(new Date(System.currentTimeMillis()));
 }

}

 

web服务的发布:

 

package cn.com.unutrip.spring.ws;

import javax.xml.ws.Endpoint;

/**
 *
 *
 * JDK1.6注解开发Ws服务
 *
 * @author longgangbai
 *
 */
public class WSPublish {
 public static void main(String[] args) {
  Thread wsPublisher = new Thread(new WebServicePublish());
  wsPublisher.start();
 }

 private static class WebServicePublish implements Runnable {
  public void run() {

//发布web发Endpoint发布
   Endpoint.publish("http://localhost:8888/HelloService",
     new RemoteServiceImpl());
  }
 }
}

 

访问路径如下:http://localhost:8888/HelloService?WSDL

访问的WSDL如下:

<?xml version="1.0" encoding="UTF-8" ?>

- <definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://cn.unutrip.com/RemoteService" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" targetNamespace="http://cn.unutrip.com/RemoteService" name="REMOTESERVICE">
  <types />
- <message name="hello">
  <part name="MyName" type="xsd:string" />
  </message>
- <message name="helloResponse">
  <part name="Greetings" type="xsd:string" />
  </message>
  <message name="printSystemTime" />
- <portType name="RemoteServiceImpl">
- <operation name="hello" parameterOrder="MyName">
  <input message="tns:hello" />
  <output message="tns:helloResponse" />
  </operation>
- <operation name="printSystemTime">
  <input message="tns:printSystemTime" />
  </operation>
  </portType>
- <binding name="RemoteServiceImplPortBinding" type="tns:RemoteServiceImpl">
  <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" />
- <operation name="hello">
  <soap:operation soapAction="" />
- <input>
  <soap:body use="literal" namespace="http://cn.unutrip.com/RemoteService" />
  </input>
- <output>
  <soap:body use="literal" namespace="http://cn.unutrip.com/RemoteService" />
  </output>
  </operation>
- <operation name="printSystemTime">
  <soap:operation soapAction="printSystemTime" />
- <input>
  <soap:body use="literal" namespace="http://cn.unutrip.com/RemoteService" />
  </input>
  </operation>
  </binding>
- <service name="REMOTESERVICE">
- <port name="RemoteServiceImplPort" binding="tns:RemoteServiceImplPortBinding">
  <soap:address location="http://localhost:8888/HelloService" />
  </port>
  </service>
  </definitions>

 

 

讲解:

注意代码中使用到的几个Annotation

@WebService注解将 Java 类标记为实现Web Service类,或者将Java接口标记为定义Web Service接口,其中serviceName属性指定了Web Service的服务名称,当映射到WSDL时,此名称被用作 此名称被用作 wsdl:service 的名称。这一个注解对应的是javax.jws.WebService,我们可以在jdk1.6的API文档里查看到所有的属性和用法。

 

@WebResult指定Web Service返回的值和WSDL之间的映射。@WebMethod指定了Web Service中要暴露的方法。标记了@WebMethod的方法可以通过Web Service客户端来远程调用(RPC)。

 

@WebParam注解用来向Web Service传递参数的。注意,@WebMethod标注的方法必须带有返回类型,除非同时标注了@Oneway。

 

◎WebResult:注解放值的可以设置默认值的。如实例中。

注意使用Endpoint发布web服务信息。

 

 

 

 

 

 

分享到:
评论
2 楼 sdh88hf 2011-08-04  
怎么与spring整合呢,有例子请发我,QQ:59 39 43 43 9  谢谢
1 楼 xujunJ2EE 2009-11-04  
RPC不是默认方式,document才是jws的默认方式,而且document是建议的方式,rpc无法支持XSD验证

相关推荐

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

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

    jdk1.6版本

    - **泛型注解**:JDK 1.6增加了对泛型的注解支持,允许开发者在泛型类型参数上使用注解,增强了类型安全性和代码可读性。 - **改进的Swing UI**:Swing库得到了大量改进,包括更好的LookAndFeel、组件拖放功能以及...

    包含 jdk1.5免安装、jdk1.6免安装、jdk1.8(32和64)

    这个压缩包包含了三个不同版本的JDK:JDK 1.5、JDK 1.6和JDK 1.8,其中1.5和1.6是早期版本,而1.8是最流行且广泛使用的版本之一。 **JDK 1.5(也称为Java 5.0)** JDK 1.5在2004年发布,引入了许多重要的新特性,如...

    tomcat7,正常,可用,需要jdk1.6版本

    【标题】"Tomcat7, 正常, 可用, 需要JDK1.6版本" 暗示了我们讨论的核心是Apache Tomcat服务器的第七个主要版本,一个广泛使用的开源Java Servlet容器,它实现了Java EE的Web应用服务规范。此版本的Tomcat被认为稳定...

    JDK 1.6 中文版.zip

    总之,JDK 1.6中文版是Java开发人员的重要资源,它包含了丰富的特性更新和优化,能够帮助开发者更高效地进行Java应用程序的开发和维护。通过使用官方中文API文档,开发者可以更好地利用这些工具和API,提升自己的...

    springboot web程序运行在jdk1.6、tomcat6的demo

    因此,开发时需要避免使用这些特性,或者使用兼容JDK 1.6的替代方法。 Tomcat 6是一个较老的Servlet容器,它支持Servlet 3.0规范。SpringBoot 1.5.6默认内置了Tomcat 8,但为了在Tomcat 6上运行,我们需要手动调整...

    jdk1.7和jdk1.6

    总的来说,JDK 1.7和JDK 1.6代表了Java平台在不同时间点的发展水平,它们都包含了丰富的功能和改进,以满足不断变化的开发需求。选择哪个版本取决于项目的具体需求,包括兼容性、性能优化和新特性的利用。

    JDK1.6 API帮助文档.zip

    JDK1.6 API帮助文档是Java开发者的重要参考资料,它详尽地列出了Java SE 6平台的核心类库,包括各种类、接口、枚举和注解,为开发者提供了全面的API功能介绍和使用方法。这个中文版文档使得中国开发者能够更方便地...

    JDK1.6的九大新特性

    为了更好地支持网络应用开发,JDK1.6中加入了HttpServer API,这使得开发者可以更轻松地创建简单的HTTP服务器。 - **特点**: - 支持HTTP和HTTPS协议。 - 提供了HTTP/1.1标准的支持。 - 允许自定义HTTP处理器。 ...

    jdk1.6 九大新特性

    ### jdk1.6 九大新特性详解 #### 一、Desktop类和SystemTray类 JDK 1.6中的AWT库引入了两个重要的类:`Desktop`和`SystemTray`,这两个类提供了更为丰富的桌面应用程序交互功能。 ##### Desktop 类 `Desktop`类...

    jdk1.6下载

    10. **Web服务支持**:JAX-WS 2.0提供了更丰富的Web服务开发工具和API,简化了SOAP通信。 下载JDK 1.6的文件名为`jdk-6u45-windows-x64.exe`,这表明是针对Windows 64位系统的第45次更新版本。通常,这些更新不仅...

    JDK1.6、JDK6下载

    JDK1.6,也称为JDK 6,是Java平台的一个重要版本,它在2006年12月首次发布,是Java SE(标准版)的一部分。这个版本引入了许多新特性、性能改进和错误修复,旨在提升开发效率和应用程序性能。 一、JDK1.6的主要特性...

    jdk1.6版本附加tomcat1.6

    结合JDK 1.6和Tomcat 6.0,Java开发人员能够构建、测试和部署高效的Web应用程序。这两个组件的组合为开发者提供了一个稳定、高效且易于管理的开发环境,特别适合小型到中型的Java Web项目。同时,它们也是学习Java ...

    API包含JDK1.6和SSH框架的api

    学习JDK1.6的API可以帮助开发者理解Java基础语法和类库的使用,例如`java.util`包下的ArrayList、HashMap,或者`java.io`包中的FileInputStream和OutputStream等。这些API文档详细描述了类、接口、方法和构造函数的...

    jdk1.6 1.6版本jdk

    JDK 1.6引入了动态注解,允许在运行时检查和处理注解,增强了元数据的使用,为代码分析和工具集成提供了便利。 2. **改进的Swing和AWT** Swing库在1.6版本中得到了优化,包括更好的UI外观、性能提升以及更多的...

    jdk1.6z中文版API+JavaEEAPI+JavaScriptAPI+servletAPI

    JDK 1.6版本是Java历史上的一个重要里程碑,它引入了许多新特性,如泛型、枚举、注解和并发改进。中文版API使得中国开发者能够更方便地查阅和理解这些功能,提高学习和工作效率。 2. **JavaEE API**:Java ...

    JDK1.6(JavaSE1.6/JDK6)

    JDK1.6之后的版本,如JDK7和JDK8,都引入了更多新特性和优化,但JDK1.6作为Java发展历程中的一环,它的特性和改进为后来的版本奠定了坚实的基础。如果你是Java开发者,了解这些知识将有助于你更好地理解Java平台的...

Global site tag (gtag.js) - Google Analytics