`

java注解webservice学习第一篇

 
阅读更多
今天开始使用java1.6的注解构建一个webservice,完成创建,调用一套;好了废话少说,开始码代码。
1.创建一个webservice与部署
package cn.thinknet.server.core.webservice;

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

import cn.thinknet.utils.log.AKLoggerUtil;
import cn.thinknet.utils.webservice.DeployWebService;

@WebService(serviceName = "TnUserInterface", targetNamespace = "http://think-net.cn/TnUserInterface")
public class UserInterface
{

    public static final int ADD = 1;

    public static final int DEL = 2;

    public static final int UPD = 3;

    public static final String SYNC_SUCCESS = "ok";

    public static final String SYNC_FAILED = "NO";

    @WebMethod(action = "SyncUser")
    public String syncUser(@WebParam(name = "action")
    int action, @WebParam(name = "data")
    String data)
    {
        boolean syncFlag = true;
        switch (action)
        {
            case ADD:
                syncFlag = addUser(data);
                break;
            case DEL:
                syncFlag = delUser(data);
                break;
            case UPD:
                syncFlag = updateUser(data);
                break;
            default:
                AKLoggerUtil.getInstance().writeInfoLog(
                        "[Sync User]Don't know what you're doing.");
                break;
        }
        return syncFlag ? SYNC_SUCCESS : SYNC_FAILED;
    }

    /**
     * 添加用户
     * @param data 用户信息
     * 
     * @return boolean 是否同步成功
     */
    private boolean addUser(String data)
    {
        boolean flag = true;

        if(flag)
        {
            AKLoggerUtil.getInstance().writeInfoLog("[User]sync add user success.");
        }
        return flag;
    }

    /**
     * 添加删除用户
     * @param data 用户id
     * 
     * @return boolean 是否同步成功
     */
    private boolean delUser(String data)
    {
        boolean flag = true;

        if(flag)
        {
            AKLoggerUtil.getInstance().writeInfoLog("[User]sync delete user success.");
        }
        return flag;
    }

    /**
     * 更新用户
     * @param data 用户信息Json对象
     * 
     * @return boolean 是否同步成功
     */
    private boolean updateUser(String data)
    {
        boolean flag = true;
        
        if(flag)
        {
            AKLoggerUtil.getInstance().writeInfoLog("[User]sync update user success.");
        }
        return flag;
    }
    
    public static void main(String[] args)
    {
        // 部署webservice
        DeployWebService.deployWebService("127.0.0.1", 11023, "/thinknet/TnUserInterface", new UserInterface());
    }
}

2.部署工具类
package cn.thinknet.utils.webservice;

import javax.xml.ws.Endpoint;

import cn.thinknet.utils.log.AKLoggerUtil;

public class DeployWebService
{
    public static final String Http_Protocol = "http";

    public static void deployWebService(String hostName, int port,
            String serviceName, Object obj)
    {
        AKLoggerUtil.getInstance().writeInfoLog(
                "Deploy webservice,service class name:"
                        + obj.getClass().getName());

        String address = Http_Protocol + "://" + hostName + ':'
                + String.valueOf(port) + serviceName;

        Endpoint.publish(address, obj);
    }
}

3.创建部署完成,下面开始调用,可以先用浏览器查看生成的wsdl报文结构,在浏览器输入这个地址:【http://127.0.0.1:11023/thinknet/TnUserInterface?wsdl】,查看结果如下:
<?xml version='1.0' encoding='UTF-8'?><wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://think-net.cn/TnUserInterface" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns1="http://schemas.xmlsoap.org/soap/http" name="TnUserInterface" targetNamespace="http://think-net.cn/TnUserInterface">
  <wsdl:types>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://think-net.cn/TnUserInterface" elementFormDefault="unqualified" targetNamespace="http://think-net.cn/TnUserInterface" version="1.0">

  <xs:element name="syncUser" type="tns:syncUser"/>

  <xs:element name="syncUserResponse" type="tns:syncUserResponse"/>

  <xs:complexType name="syncUser">
    <xs:sequence>
      <xs:element name="action" type="xs:int"/>
      <xs:element minOccurs="0" name="data" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="syncUserResponse">
    <xs:sequence>
      <xs:element minOccurs="0" name="return" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>

</xs:schema>
  </wsdl:types>
  <wsdl:message name="syncUser">
    <wsdl:part element="tns:syncUser" name="parameters">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="syncUserResponse">
    <wsdl:part element="tns:syncUserResponse" name="parameters">
    </wsdl:part>
  </wsdl:message>
  <wsdl:portType name="UserInterface">
    <wsdl:operation name="syncUser">
      <wsdl:input message="tns:syncUser" name="syncUser">
    </wsdl:input>
      <wsdl:output message="tns:syncUserResponse" name="syncUserResponse">
    </wsdl:output>
    </wsdl:operation>
  </wsdl:portType>
  <wsdl:binding name="TnUserInterfaceSoapBinding" type="tns:UserInterface">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsdl:operation name="syncUser">
      <soap:operation soapAction="SyncUser" style="document"/>
      <wsdl:input name="syncUser">
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output name="syncUserResponse">
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="TnUserInterface">
    <wsdl:port binding="tns:TnUserInterfaceSoapBinding" name="UserInterfacePort">
      <soap:address location="http://127.0.0.1:11023/thinknet/TnUserInterface"/>
    </wsdl:port>
  </wsdl:service>
</wsdl:definitions>

4.采用CXF包调用,CXF调用webservice所需要的jar,请在附件中自行下载,代码如下:
public static void main(String[] args) throws Exception
    {
        org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory dcf = org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory
                .newInstance();

        org.apache.cxf.endpoint.Client client = dcf
                .createClient("http://127.0.0.1:11023/thinknet/TnUserInterface?wsdl");
        // sayHello 为接口中定义的方法名称 张三为传递的参数 返回一个Object数组
        Object[] objects = client.invoke("syncUser", 1, "test");
        // 输出调用结果
        System.out.println("==================>" + objects[0].toString());
    }

5.这里列出需要的jar名称,方便亲们定位:
  • cxf-2.6.13.jar
  • jetty-continuation-7.5.4.v20111024.jar
  • jetty-http-7.5.4.v20111024.jar
  • jetty-io-7.5.4.v20111024.jar
  • jetty-server-7.5.4.v20111024.jar
  • jetty-util-7.5.4.v20111024.jar
  • neethi-3.0.3.jar
  • stax2-api-3.1.1.jar
  • woodstox-core-asl-4.2.0.jar
  • wsdl4j-1.6.3.jar
  • ezmorph-1.0.4.jar
  • xmlschema-core-2.0.3.jar

6.下面使用SOAPUI专业软件测试一下我们这个webservice吧!请看下图:
  • 大小: 205.8 KB
分享到:
评论

相关推荐

    JAVA的WebService支持

    Java的Web服务(WebService)是一种基于开放标准的互联网通信协议,它允许不同系统之间的应用程序进行交互,不受平台或编程语言的限制。Java提供了强大的WebService支持,主要通过SOAP(Simple Object Access ...

    java 调用webservice的各种方法总结

    Java调用WebService是一种常见的在不同应用之间进行通信的方式,它允许Java应用程序通过SOAP(Simple Object Access Protocol)消息与远程Web服务交互。以下是两种常见的Java调用WebService的方法: **一、利用JDK ...

    JAVA调用Webservice接口Demo

    通过这个Java调用Webservice接口的Demo,开发者可以学习到如何在Java中创建和消费Web服务,以及如何处理Web服务中的数据交换。这个项目不仅可以作为学习的起点,还可以作为模板用于实际项目中的Web服务集成。在实际...

    Java发布和调用WebService

    在Java中,发布一个WebService的第一步是创建一个服务类。这个类通常需要添加`@WebService`注解,表明它是对外提供服务的接口。例如: ```java @WebService public class SimpleServer { public String sayHello()...

    JAVA webservice and android端

    开发者可以通过学习和理解这些代码,掌握Java WebService与Android客户端之间的数据通信,进一步提升自己的技能。同时,对于Android开发者来说,理解服务器端的逻辑和数据模型也有助于更好地设计和实现客户端应用。

    java+Webservice开发(CXF)

    - 定义服务接口和实现:使用Java注解如`@WebService`来定义服务接口,并实现该接口。 - 生成服务端点:CXF会自动根据接口生成服务端点(SEI,Service Endpoint Interface)。 - 部署服务:将服务部署到应用服务器...

    springboot+webservice搭建webservice服务端及使用java客户端两种方式进行调用webservice接口

    这可以通过创建一个`@WebServiceServer`注解的类完成: ```java // GreetingServerConfig.java import org.apache.cxf.frontend.ServerFactoryBean; import org.springframework.beans.factory.annotation....

    webservice获取List案例

    6. **文件08_01_webservice**:这个名字可能表示这是一个关于第八章第一节的WebService示例。这个文件可能是一个包含源代码、配置文件和其他相关资源的项目文件夹。要学习这个案例,你需要解压文件并查看其中的代码...

    JAVA6开发WebService JWS示例

    JAX-WS 是 JAVA 中的一种 WebService 规范,早期的 JAVA Web 服务规范 JAX-RPC(Java API For XML-Remote Procedure Call)目前已经被 JAX-WS 规范取代,JAX-WS 是 JAX-RPC 的演进版本,但 JAX-WS 并不完全向后兼容 ...

    java调用webservice.pdf

    在Java中,你可以使用`@WebService`注解标记一个类为Web服务接口,通过`@WebMethod`标注方法作为服务操作。下面的示例展示了一个简单的"Hello, World"服务: ```java package Hello; import javax.jws....

    Java调用webService应用.zip

    Java调用WebService应用是软件开发中的常见任务,它允许Java应用程序与远程的Web服务进行交互,从而实现数据交换和服务的集成。在这个主题中,我们将深入探讨如何在Java环境中使用不同的库和技术来调用WebService。 ...

    java_调用Webservice接口

    第一种方法使用了JDK自带的WebService API,虽然步骤相对较多,但对于理解Webservice的工作原理非常有帮助;第二种方法使用XFire框架,虽然更为简便快捷,但在某些复杂场景下的灵活性可能会略显不足。根据实际需求...

    Java6开发WebService详细啊.docx

    在提供的示例中,定义了一个名为`Java6WebService`的类,它使用了`@WebService`注解来标识这个类为一个Web Service。这个注解表明该类将作为Web Service的终结点(Endpoint)。下面是对这段代码的详细解释: ```...

    定时调用java程序监控webservice或系统可用性

    Java中的定时任务可以使用多种框架实现,如`java.util.Timer`类、`java.util.concurrent.ScheduledExecutorService`以及第三方库Quartz和Spring的`@Scheduled`注解。这里我们重点讨论`ScheduledExecutorService`,...

    Java6开发WebService入门

    通过以上内容的学习,我们可以了解到Java 6内置的WebService支持不仅方便了开发,还大大降低了项目部署的成本。这对于那些希望快速搭建Web服务而又不想引入过多第三方依赖的开发者来说是一个非常好的选择。

    java调用webservice几种方式代码

    Axis2提供了代码第一和WSDL第一两种开发模式。客户端可以通过`AxisClient`或`ServiceStub`进行调用: ```java ConfigurationContext configContext = ConfigurationContextFactory....

    java调用webservice(20211103125800).pdf

    通过在Java类上使用@WebService和@WebMethod注解,可以创建一个简单的Web服务。例如,以下示例创建了一个名为Hello的服务,它接受一个字符串参数并返回一个问候: ```java package Hello; import javax.jws....

    java命名规范 开发规范

    开发一个需要对第三方应用发布的WebService 步骤: a. 开发WebService接口,@WebService进行注解该接口; b. 开发WebService接口实现类,@WebService注解该实现类,并制定endpointInterface; c. 配置...

    webservice 第一个小项目

    本项目以"webservice 第一个小项目"为主题,将带你入门Java实现的WebService技术。 首先,我们需要了解WebService的基本概念。WebService是一种基于开放标准(如XML、SOAP、WSDL和UDDI)的互联网协议,它能够使应用...

Global site tag (gtag.js) - Google Analytics