java发布webService

Web 服务已经出现很久了。首先是 SOAP,但 SOAP 仅描述消息的情况,然后是 WSDL,WSDL 并不会告诉您如何使用

Java™ 编写 Web 服务。在这种情况下,JAX-RPC 1.0 应运而生。经过数月使用之后,编写此规范的 Java Community

Process (JCP) 人员认识到需要对其进行一些调整,调整的结果就是 JAX-RPC 1.1。该规范使用大约一年之后,JCP

人员希望构建一个更好的版本:JAX-RPC 2.0。其主要目标是与行业方向保持一致,但行业中不仅只使用 RPC Web 服

务,还使用面向消息的 Web 服务。因此从名称中去掉了“RPC”,取而代之的是“WS”(当然表示的是 Web 服务)

。因此 JAX-RPC 1.1 的后续版本是 JAX-WS 2.0——Java API for XML-based Web services。


首先,编写服务端接口实现类(java SEI)Service Endpoint Interface
package endpoint;

import javax.jws.WebMethod;
import javax.jws.WebService;

@WebService(name = "Calculator", serviceName = "CalculatorService", targetNamespace =

"http://techtip.com/jaxws/sample")
public class Calculator {
public Calculator() {
}

@WebMethod(operationName = "add", action = "urn:Add")
public int add(int i, int j) {
int k = i + j;
System.out.println(i + "+" + j + " = " + k);
return k;
}
}


研究上面的实现类Calculator,注意到类里的两个注释的使用@WebService跟@WebMethod。一个正确的端点实现类必

须包含有一个@WebService注释。这个注释标注这个类将作为一个web服务对外开放。@WebService的name属性表明了

web服务描述语言(WSDL)里的端口类型(portType)(在这个例子里是”Calculator”)。而

serviceName="CalculatorService"对应的是一个WSDL里的服务元素(service)。targetNamespace属性为WSDL说明了

XML的命名空间。所有的这些属性都是可选的。对于这些属性的默认值是什么,请参考Web Services Metadata for

the Java Platform规范,JSR 181。

再来看看另外一个重要的注释@WebMethod,被它注释过的方法说明将它以一个

web服务的方法暴露出来,被其他应用来调用。@WebMethod注释里的operationName

声明了WSDL里的一个元素WSDL operation(在这个例子里,”add”),另外一

个属性action =("urn:Add"),它为WSDL还有一些从这个web服务操作(web service operation)生

成的元素声明了一个命名空间。这两个属性都是可选的。如果你没有列出来的

话,WSDL操作(operation)的值将会默认为方法名,还有action值也会默认为

服务的targetNamespace。


2.执行wsgen
D:\>wsgen -cp D:\EclipseWorckspace\JavaWS\bin -s D:\EclipseWorckspace\JavaWS\sr
c -d D:\EclipseWorckspace\JavaWS\bin -r D:\EclipseWorckspace\JavaWS\wsdl -wsdl e
ndpoint.Calculator

3.把生成的源文件放到工程里面,通过Endpoin类执行发布
JDK6提供了发布Web Service的简便方法:
package endpoint;
import javax.xml.ws.Endpoint;
public class Publish {
public static void main(String[] args) {
Endpoint.publish("http://localhost:8181/cal", new Calculator());
System.out.println("success...");
}
}

这样,就可以通过soupUI测试发布的服务了。


wsgen命令的使用
该命主要用来对SEI实现类做处理,生成相应的.java、.class和wsdl文件;使用方法如下:
-cp 指明编译后的class文件所在的目录,要用全名,并且后面要跟个“.”,去两边要有空格;
-s 定义把生成的.java文件放在哪个目录(必须指定目录)
-d 定义把生成的.class文件放在哪个目录(必须指定目录)
-wsdl 指定生成wsdl文件(没有目录,即便指定也是生成在-d所指定的目录里)
-version 版本号
例如:wsgen -cp . endpoint.Calculator -s src -d bin -wsdl
上面都是相对目录。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值