bingoideas

轻叩枝头结,默数桃花开
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

java6原生支持的webservice

Posted on 2010-01-23 17:50  bingoideas  阅读(1866)  评论(0)    收藏  举报

最近一直在项目组和其他公司做接口,应项目的需求,需要开发webservice接口,于是乎在网上google了一大堆资料和例子,包括axis2xfirecxf等等,由于比较紧急没有来得及深入研究,现就java6原生支持webservice的使用做一番记录,以备参考。

测试环境

Eclipsejdk1.6

首先,jdk的版本要升级到6.0,在eclipse中新建一个java project 工程,工程名我使用service,具体目录参照下图

 

 

新建一个普通类JavaService.java代码如下

package cn.com.wsm.service;

import javax.jws.WebService;

import javax.xml.ws.Endpoint;

@WebService

public class JavaService

{

    public String doSomething(String s)

    {

        System.out.println(s);

        return "Hello " + s +" !";

    }

    public static void main(String[] args)

    {

        Endpoint.publish("http://10.41.109.41:8888/service/"new JavaService());

    }

}

截图如下


 

这里的URL是自己指定的,必须以“/”结束

现在点击运行,OK,可以测试我的webservice

在浏览器中输入http://10.41.109.41:8888/service/?wsdl

可以看到如下文档

  <?xml version="1.0" encoding="UTF-8" ?>
<!--
 Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.1.6 in JDK 6.   
-->
<!--
 Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.1.6 in JDK 6. 
  -->
- <definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://service.wsm.com.cn/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://service.wsm.com.cn/" name="JavaServiceService">
- <types>
- <xsd:schema>
  <xsd:import namespace="http://service.wsm.com.cn/" schemaLocation="http://10.41.109.41:8888/service/?xsd=1" />
  </xsd:schema>
  </types>
- <message name="doSomething">
  <part name="parameters" element="tns:doSomething" />
  </message>
- <message name="doSomethingResponse">
  <part name="parameters" element="tns:doSomethingResponse" />
  </message>
- <portType name="JavaService">
- <operation name="doSomething">
  <input message="tns:doSomething" />
  <output message="tns:doSomethingResponse" />
  </operation>
  </portType>
- <binding name="JavaServicePortBinding" type="tns:JavaService">
  <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
- <operation name="doSomething">
  <soap:operation soapAction="" />
- <input>
  <soap:body use="literal" />
  </input>
- <output>
  <soap:body use="literal" />
  </output>
  </operation>
  </binding>
- <service name="JavaServiceService">
- <port name="JavaServicePort" binding="tns:JavaServicePortBinding">
  <soap:address location="http://10.41.109.41:8888/service/" />
  </port>
  </service>
  </definitions>

 

这表明我的service是正确的。

把截图附上

 

 

 

下一步开始编写客户端的调用

首先需要在命令行下进入工程的src目录

运行如下命令

wsimport -p cn.com.wsm.client -keep http://10.41.109.41:8888/service/?wsdl

可以看到有如下输出

parsing WSDL...

generating code...

compiling code...

看到以上信息表明成功了

把图附上

 

此时返回工程包视图,可以看到,刚才的操作生成了许多类,这些类在指定的cn.com.wsm.client包中

 

现在开始编写客户端Client.java代码如下

package cn.com.wsm.service;

import cn.com.wsm.client.JavaService;

import cn.com.wsm.client.JavaServiceService;

public class Client

{

    /**

     * @param args

     */

    public static void main(String[] args)

    {

        JavaService javaService = new JavaServiceService().getJavaServicePort();

        String s = javaService.doSomething("wsm");

        System.out.println(s);

    }

}

注意这里的两个类引用,必须是client包中对应的类

import cn.com.wsm.client.JavaService;

import cn.com.wsm.client.JavaServiceService;

OK,编译运行Client.java

输出 Hello wsm !

测试成功。

这只是一个简单的例子,还没来得及深入研究,在此备忘。