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

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服务信息。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值