关闭

JAX-WS 学习一:基于java的最简单的WebService服务

338人阅读 评论(0) 收藏 举报
分类:

JAVA 1.6 之后,自带的JAX-WS API,这使得我们可以很方便的开发一个基于Java的WebService服务。

基于JAVA的WebService 服务 

1、创建服务端WebService服务接口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package com.st.services;
 
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;
import javax.jws.soap.SOAPBinding.Use;
 
@WebService(serviceName="calculator",targetNamespace="com.st.services")
@SOAPBinding(style=Style.RPC,use=Use.LITERAL)
public class CalculatorService {
     
    public int sum(int a,int b){
        return a+b ;
    }
 
}

 

@WebService

此注示用来标明此java类为某个WebService的实现类或者标明此java接口定义了某个WebService的接口。

@WebService有六个参数可以用来配置这个WebService的定义:

  1、endpointInterface:指向一个定义此WebService抽象定义接口的完整类路(如果没有定义接口,直接写的实现类,则该参数不需要)

  2、name:WebService名;默认的port名为"实现类名+Port",binding名为"实现类名+PortBinding",通过指定name的值来替换 实现类名。

  3、portName:指定port名,可以完成替换默认port名,或由上面的"name"指定的port名。

  4、targetNamespace:指定targetNamespace值,默认的值为 "http://包名/",可以通过此变量指定一个自定义的targetNamespace值。(注:如果分别定义和接口和实现,则他们有各自的targetNamespace)

    5、serviceName:指定service名

    6、wsdlLocation:指向一个预定义的wsdl的文件,替代自动生成的wsdl文件。

!如果不想定义的话,可以直接写一个@WebService ,其他的属性用默认的。

@WebMethod

  1. action:指定此方法对应的action
  2. exclude:true --表示此方法包含在web服务中;false表示排除此方法
  3. operationName:指定方法对应的operation的名字。

!如果你对你的WebService方法没有啥特殊要求的话,该参数可以不写,那将会使你的所有的方法发布出去。

 

2、发布服务

1
2
3
4
public static void main(String[] args) { 
       Endpoint.publish("http://localhost:8088/calculator"
               new CalculatorService()); 
   

 

这里publish方法需要两个参数:

  • address:服务对外暴露的用于调用服务的地址
  • implementor:服务的实现对象

启动这个Server类,就可以访问服务了。要测试服务有没有启动,可以输入http://localhost:8088/calculator?wsdl,如果一切正常,就可以看到一个wsdl定义内容,表示服务已经成功启动。

 

3、客户端程序的调用

    客户端的代码建议使用wsimport 去生成(前提:在你的电脑上已经配置了JDK的环境变量)

    直接在CMD中运行:

wsimport -keep -p com.st.client http://localhost:8088/calculator?wsdl 

  -p : 定义生成包的包名(可以不写)

然后将生成的java类放到项目中进行调用 

 

!使用java发布WebService,默认是发布到了JDK的WEB容器中了,但在具体的项目中,更多的是有独立WEB容器(eg:Tomcat),所有这里只是对此做个简单的介绍

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:236332次
    • 积分:5239
    • 等级:
    • 排名:第5452名
    • 原创:201篇
    • 转载:422篇
    • 译文:1篇
    • 评论:61条