java6原生支持的webservice

最近一直在项目组和其他公司做接口,应项目的需求,需要开发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 !

测试成功。

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

 

你可能感兴趣的:(webservice)