JDK1.6使用注解轻松开发Web服务
关键字: 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服务信息。
分享到:
相关推荐
在 JDK 1.6 版本中,注解的引入极大地简化了 Web 服务的开发,使得开发者能够更高效地创建、部署和管理 Web 服务。 `@WebService` 是 Java Web Services (JAX-WS) 中的一个核心注解,用于声明一个类或接口作为 Web ...
- **泛型注解**:JDK 1.6增加了对泛型的注解支持,允许开发者在泛型类型参数上使用注解,增强了类型安全性和代码可读性。 - **改进的Swing UI**:Swing库得到了大量改进,包括更好的LookAndFeel、组件拖放功能以及...
这个压缩包包含了三个不同版本的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版本" 暗示了我们讨论的核心是Apache Tomcat服务器的第七个主要版本,一个广泛使用的开源Java Servlet容器,它实现了Java EE的Web应用服务规范。此版本的Tomcat被认为稳定...
总之,JDK 1.6中文版是Java开发人员的重要资源,它包含了丰富的特性更新和优化,能够帮助开发者更高效地进行Java应用程序的开发和维护。通过使用官方中文API文档,开发者可以更好地利用这些工具和API,提升自己的...
因此,开发时需要避免使用这些特性,或者使用兼容JDK 1.6的替代方法。 Tomcat 6是一个较老的Servlet容器,它支持Servlet 3.0规范。SpringBoot 1.5.6默认内置了Tomcat 8,但为了在Tomcat 6上运行,我们需要手动调整...
总的来说,JDK 1.7和JDK 1.6代表了Java平台在不同时间点的发展水平,它们都包含了丰富的功能和改进,以满足不断变化的开发需求。选择哪个版本取决于项目的具体需求,包括兼容性、性能优化和新特性的利用。
JDK1.6 API帮助文档是Java开发者的重要参考资料,它详尽地列出了Java SE 6平台的核心类库,包括各种类、接口、枚举和注解,为开发者提供了全面的API功能介绍和使用方法。这个中文版文档使得中国开发者能够更方便地...
为了更好地支持网络应用开发,JDK1.6中加入了HttpServer API,这使得开发者可以更轻松地创建简单的HTTP服务器。 - **特点**: - 支持HTTP和HTTPS协议。 - 提供了HTTP/1.1标准的支持。 - 允许自定义HTTP处理器。 ...
### jdk1.6 九大新特性详解 #### 一、Desktop类和SystemTray类 JDK 1.6中的AWT库引入了两个重要的类:`Desktop`和`SystemTray`,这两个类提供了更为丰富的桌面应用程序交互功能。 ##### Desktop 类 `Desktop`类...
10. **Web服务支持**:JAX-WS 2.0提供了更丰富的Web服务开发工具和API,简化了SOAP通信。 下载JDK 1.6的文件名为`jdk-6u45-windows-x64.exe`,这表明是针对Windows 64位系统的第45次更新版本。通常,这些更新不仅...
JDK1.6,也称为JDK 6,是Java平台的一个重要版本,它在2006年12月首次发布,是Java SE(标准版)的一部分。这个版本引入了许多新特性、性能改进和错误修复,旨在提升开发效率和应用程序性能。 一、JDK1.6的主要特性...
结合JDK 1.6和Tomcat 6.0,Java开发人员能够构建、测试和部署高效的Web应用程序。这两个组件的组合为开发者提供了一个稳定、高效且易于管理的开发环境,特别适合小型到中型的Java Web项目。同时,它们也是学习Java ...
学习JDK1.6的API可以帮助开发者理解Java基础语法和类库的使用,例如`java.util`包下的ArrayList、HashMap,或者`java.io`包中的FileInputStream和OutputStream等。这些API文档详细描述了类、接口、方法和构造函数的...
JDK 1.6引入了动态注解,允许在运行时检查和处理注解,增强了元数据的使用,为代码分析和工具集成提供了便利。 2. **改进的Swing和AWT** Swing库在1.6版本中得到了优化,包括更好的UI外观、性能提升以及更多的...
JDK 1.6版本是Java历史上的一个重要里程碑,它引入了许多新特性,如泛型、枚举、注解和并发改进。中文版API使得中国开发者能够更方便地查阅和理解这些功能,提高学习和工作效率。 2. **JavaEE API**:Java ...
JDK1.6之后的版本,如JDK7和JDK8,都引入了更多新特性和优化,但JDK1.6作为Java发展历程中的一环,它的特性和改进为后来的版本奠定了坚实的基础。如果你是Java开发者,了解这些知识将有助于你更好地理解Java平台的...