`
aihhd2008
  • 浏览: 25548 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
最近访客 更多访客>>
社区版块
存档分类
最新评论

Axis2部署WebService-----简单应用

    博客分类:
  • java
阅读更多
首先介绍一下,这个应用的业务逻辑,很简单,就是客户端向服武器端发送一个用户名,然后服务器端根据用户名返回,该人的详细信息.
1):首先写个 服武器端的service
该类的代码如下:
package com.neusoft.axis.service;
import com.neusoft.axis.common.AxisClientRequestInfo;
import com.neusoft.axis.common.AxisServiceResponseInfo;
public class AxisServiceResponse  
{
        public AxisServiceResponseInfo axisServiceReturnPersonInfo(AxisClientRequestInfo clientrequest)
        {
            AxisServiceResponseInfo axisserviceresponseinfo = new AxisServiceResponseInfo();
            String name = clientrequest.getName();
            if(name.equals("许兆光"))
            {
                axisserviceresponseinfo.setAge("25");
                axisserviceresponseinfo.setDegree("本科");
                axisserviceresponseinfo.setSex("男");
            }
            else if(name.equals("葛祥平"))
            {
                axisserviceresponseinfo.setAge("27");
                axisserviceresponseinfo.setDegree("研究生");
                axisserviceresponseinfo.setSex("男");
            }
            else
            {
                axisserviceresponseinfo.setAge("");
                axisserviceresponseinfo.setDegree("");
                axisserviceresponseinfo.setSex("");
                System.out.println("客户端没有发送姓名到服务端!");
            }
            if(name.equals(""))
            {
                return axisserviceresponseinfo;
            }
            System.out.println("客户端发送来的姓名是:"+name);
            System.out.println("下边是服武器端根据客户端发送来姓名得到的该人的详细信息:");
            System.out.println("姓名=========="+name);
            System.out.println("年龄=========="+axisserviceresponseinfo.getAge());
            System.out.println("学位=========="+axisserviceresponseinfo.getDegree());
            System.out.println("性别=========="+axisserviceresponseinfo.getSex());
            return axisserviceresponseinfo;
        }
}

2):用上边的服务端的service 生成 AxisTest.wsdl文件 用eclipse的插件生成代码的过程我就部说了.
这个文件的代码如下:
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns:ns1="http://AxisServiceResponse.service.axis.neusoft.com/types"
xmlns:ns="http://AxisServiceResponse.service.axis.neusoft.com"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
targetNamespace="http://AxisServiceResponse.service.axis.neusoft.com">
<wsdl:types>
      <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
       xmlns:stn_1="http://common.axis.neusoft.com/xsd"
       targetNamespace="http://common.axis.neusoft.com/xsd"
       elementFormDefault="unqualified"
       attributeFormDefault="unqualified">
       <xs:element type="stn_1:AxisClientRequestInfo"
        name="AxisClientRequestInfo" />
       <xs:complexType name="AxisClientRequestInfo">
        <xs:sequence>
         <xs:element type="xs:string" name="name" />
        </xs:sequence>
       </xs:complexType>
       <xs:element type="stn_1:AxisServiceResponseInfo"
        name="AxisServiceResponseInfo" />
       <xs:complexType name="AxisServiceResponseInfo">
        <xs:sequence>
         <xs:element type="xs:string" name="age" />
         <xs:element type="xs:string" name="degree" />
         <xs:element type="xs:string" name="sex" />
        </xs:sequence>
       </xs:complexType>
       <xs:complexType name="AxisClientRequestInfo">
        <xs:sequence>
         <xs:element type="xs:string" name="name" />
        </xs:sequence>
       </xs:complexType>
       <xs:complexType name="AxisServiceResponseInfo">
        <xs:sequence>
         <xs:element type="xs:string" name="age" />
         <xs:element type="xs:string" name="degree" />
         <xs:element type="xs:string" name="sex" />
        </xs:sequence>
       </xs:complexType>
      </xs:schema>
      <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
       xmlns:types="http://AxisServiceResponse.service.axis.neusoft.com/types"
       xmlns:stn_3="http://common.axis.neusoft.com/xsd"
       targetNamespace="http://AxisServiceResponse.service.axis.neusoft.com/types"
       elementFormDefault="unqualified"
       attributeFormDefault="unqualified">
       <xs:import namespace="http://common.axis.neusoft.com/xsd" />
       <xs:element name="axisServiceReturnPersonInfo">
        <xs:complexType>
         <xs:sequence>
          <xs:element type="stn_3:AxisClientRequestInfo"
           name="clientrequest" />
         </xs:sequence>
        </xs:complexType>
       </xs:element>
       <xs:element name="axisServiceReturnPersonInfoResponse">
        <xs:complexType>
         <xs:sequence>
          <xs:element type="stn_3:AxisServiceResponseInfo"
           name="return" />
         </xs:sequence>
        </xs:complexType>
       </xs:element>
      </xs:schema>
</wsdl:types>
<wsdl:message name="axisServiceReturnPersonInfoMessage">
      <wsdl:part element="ns1:axisServiceReturnPersonInfo"
       name="part1" />
</wsdl:message>
<wsdl:message name="axisServiceReturnPersonInfoResponseMessage">
      <wsdl:part element="ns1:axisServiceReturnPersonInfoResponse"
       name="part1" />
</wsdl:message>
<wsdl:portType name="AxisServiceResponsePortType">
      <wsdl:operation name="axisServiceReturnPersonInfo">
       <wsdl:input message="ns:axisServiceReturnPersonInfoMessage" />
       <wsdl:output
        message="ns:axisServiceReturnPersonInfoResponseMessage" />
      </wsdl:operation>
</wsdl:portType>
<wsdl:binding type="ns:AxisServiceResponsePortType"
      name="AxisServiceResponseSOAP11Binding">
      <soap:binding style="document"
       transport="http://schemas.xmlsoap.org/soap/http" />
      <wsdl:operation name="axisServiceReturnPersonInfo">
       <soap:operation style="document"
        soapAction="urn:axisServiceReturnPersonInfo" />
       <wsdl:input>
        <soap:body
         namespace="http://AxisServiceResponse.service.axis.neusoft.com"
         use="literal" />
       </wsdl:input>
       <wsdl:output>
        <soap:body
         namespace="http://AxisServiceResponse.service.axis.neusoft.com"
         use="literal" />
       </wsdl:output>
      </wsdl:operation>
</wsdl:binding>
<wsdl:binding type="ns:AxisServiceResponsePortType"
      name="AxisServiceResponseSOAP12Binding">
      <soap12:binding style="document"
       transport="http://schemas.xmlsoap.org/soap/http" />
      <wsdl:operation name="axisServiceReturnPersonInfo">
       <soap12:operation style="document"
        soapAction="urn:axisServiceReturnPersonInfo" />
       <wsdl:input>
        <soap12:body
         namespace="http://AxisServiceResponse.service.axis.neusoft.com"
         use="literal" />
       </wsdl:input>
       <wsdl:output>
        <soap12:body
         namespace="http://AxisServiceResponse.service.axis.neusoft.com"
         use="literal" />
       </wsdl:output>
      </wsdl:operation>
</wsdl:binding>
<wsdl:service name="AxisServiceResponse">
      <wsdl:port binding="ns:AxisServiceResponseSOAP11Binding"
       name="AxisServiceResponseSOAP11port">
       <soap:address
        location="http://localhost:8080/axis2/services/AxisServiceResponse" />
      </wsdl:port>
      <wsdl:port binding="ns:AxisServiceResponseSOAP12Binding"
       name="AxisServiceResponseSOAP12port">
       <soap12:address
        location="http://localhost:8080/axis2/services/AxisServiceResponse" />
      </wsdl:port>
</wsdl:service>
</wsdl:definitions>

3):写个客户端的代码用来和服务器端通信:代码如下:
package com.neusoft.axis.client;
import javax.xml.namespace.QName;
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;
import com.neusoft.axis.common.AxisClientRequestInfo;
import com.neusoft.axis.common.AxisServiceResponseInfo;
public class AxisClientRequest
{
        public static void main(String[] args) throws AxisFault
        {
            System.out.println("==========客户端发送一个用户名,下边是服武器端根据用户名返回的该人的详细信息");
            System.out.println("==========开始向服武器端发送数据");
            RPCServiceClient serviceClient = new RPCServiceClient();
            Options options = serviceClient.getOptions();
            EndpointReference targetEPR = new EndpointReference("http://localhost:8888/axis2/services/AxisTest");
            options.setTo(targetEPR);
        
            QName sendPersonInfo = new QName("http://AxisServiceResponse.service.axis.neusoft.com/types", "axisServiceReturnPersonInfo");
        
            AxisClientRequestInfo axisclientrequestinfo = new AxisClientRequestInfo();
            axisclientrequestinfo.setName("许兆光");
        
            System.out.println("==========客户端发送的姓名是:"+axisclientrequestinfo.getName());
        
            Class[] returnTypes = new Class[] { AxisServiceResponseInfo.class };
            Object[] opSendInfo = new Object[] { axisclientrequestinfo};
        
            System.out.println("==========开始请求服武器端方法:"+"axisServiceReturnPersonInfo");
            Object[] response = serviceClient.invokeBlocking(sendPersonInfo, opSendInfo, returnTypes);
            System.out.println("==========客户端请求服务端方法成功!");
        
            AxisServiceResponseInfo result = (AxisServiceResponseInfo) response[0];
            System.out.println("==========下边是从服武器返回"+axisclientrequestinfo.getName()+"的个人信息是:");
            System.out.println("==========年龄"+result.getAge());
            System.out.println("==========学历"+result.getDegree());
            System.out.println("==========性别"+result.getSex());
        }
}

4):在联合上述客户端和服务器端通信的代码中还有两个类,他们用来携带客户端向服务器端发送的消息和服务器端根据客户端发送来的消息返回的消息.代码如下:
package com.neusoft.axis.common;
public class AxisClientRequestInfo
{
        private String name;
        public String getName()
        {
            return name;
        }
        public void setName(String name)
        {
            this.name = name;
        }
}
package com.neusoft.axis.common;
public class AxisServiceResponseInfo
{
        private String sex;
        private String age;
        private String degree;
        public String getAge()
        {
            return age;
        }
        public void setAge(String age)
        {
            this.age = age;
        }
        public String getDegree()
        {
            return degree;
        }
        public void setDegree(String degree)
        {
            this.degree = degree;
        }
        public String getSex()
        {
            return sex;
        }
        public void setSex(String sex)
        {
            this.sex = sex;
        }
}

5):还有一个比较重要的文件 就是services.xml
代码如下:
<service name="AxisTest" scope="application"
targetNamespace="http://AxisServiceResponse.service.axis.neusoft.com/types">
<description>Security Joint Defence Service</description>
<parameter name="ServiceClass" locked="false">
      com.neusoft.axis.service.AxisServiceResponse
</parameter>
<messageReceivers>
      <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
       class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
      <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
       class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
</messageReceivers>
<schema schemaNamespace="http://AxisServiceResponse.service.axis.neusoft.com/types" />
</service>

到现在代码都已经完成了用eclipse的打包工具,把它打成包就可以发布了,运行客户端程序就可以在控制台和tomcat控制台看到结果了,注意服务器端的信息只打印在tomcat控制台上.在eclipse的控制台看到的信息是客户端和服务器发回的信息.
特别注意的是,如果在编译中出现问题,很可能是jar包版本不同导致的.


1
0
分享到:
评论

相关推荐

    部署WebService(eclipse-axis2)

    ### 部署WebService(eclipse-axis2)的关键步骤与实践 #### 一、概述 部署WebService涉及使用Eclipse集成开发环境结合Axis2框架来搭建Web服务。本文将详细介绍如何使用Eclipse 3.5.0 和 Axis2-1.3 版本进行...

    axis2-1.5.4-bin.zip axis2-1.5.4-war.zip

    Axis2的war版本是预编译好的Web服务应用程序,可以直接部署到支持Servlet容器(如Tomcat、Jetty)上,便于快速启用Web服务功能。 4. **Web服务**:Web服务是一种通过互联网进行通信的应用程序接口,允许不同系统...

    WebService-Axis2 详细讲解

    WebService-Axis2 详细讲解 WebService是一种基于XML的开放标准,用于在不同的应用程序之间进行通信。它允许不同系统之间的数据交换,打破了平台和语言的界限。Axis2是Apache软件基金会开发的一个高性能、灵活且可...

    axis2实现webservice

    ### Axis2实现WebService知识...通过以上步骤,可以实现一个完整的基于Axis2的WebService应用,包括服务端的发布和客户端的调用。这为开发者提供了一个清晰的指南,帮助他们更好地理解和使用Axis2进行WebService开发。

    axis2-1.6.3-bin

    服务模块可以通过简单的命令行工具部署到Axis2服务器上。此外,Axis2支持多种传输协议,如HTTP、HTTPS和JMS,以及各种数据格式,如SOAP、RESTful风格的XML和JSON。 总结来说,Apache Axis2-1.6.3是一个用于开发和...

    Spring集成axis2实现webservice所用到的包

    这需要将服务类和相关的配置文件打包成一个Axis2模块(.aar文件),然后部署到Axis2服务器上。 5. **测试和调用**:一旦服务被部署,就可以通过Spring的`WebServiceTemplate`或`WebServiceProxyFactoryBean`来测试...

    axis2;WebService

    【Axis2 WebService 开发指南】是关于使用Apache Axis2框架创建和操作Web...这个指南覆盖了Axis2的基本使用,包括从创建简单的服务到复杂的会话管理和扩展性,对于理解和实践Axis2 WebService开发具有很高的参考价值。

    webservice-axis2

    标题"webservice-axis2"暗示了本压缩包主要涉及的是使用Apache Axis2来开发和部署Web服务的内容。Apache Axis2是Axis1的升级版,其设计目标是提高性能、增强可扩展性和提供更好的模块化结构。它是Apache SOAP...

    axis2包 使用axis2开发webservice需要的jar包

    标签中的"axis"和"axis2"指的是Apache Axis的两个版本,"webservice"则是我们关注的主要应用领域。在开发Web服务时,我们需要的jar包主要包括: 1. `axis2-adb.jar`:包含了Axis2的数据绑定(ADB)实现,用于自动...

    axis2-1.4.1-webservice开发工具

    开发者可以通过简单的命令行工具或管理控制台将AAR文件部署到Axis2服务器上。 4. **服务客户端**:Axis2提供了一套完善的客户端工具,包括Stub生成器,能够从WSDL生成Java客户端代码,使得调用Web服务如同调用本地...

    axis2 axis webservice web 服务

    标题中的“Axis2 Axis WebService Web 服务”指的是Apache Axis2,它是一个强大的Web服务框架,主要用于构建和部署Web服务。Axis2是Apache SOAP(Simple Object Access Protocol)项目的第二代实现,专门设计用于...

    WebService------AXIS

    1. **易用性**:AXIS提供了一套简单的命令行工具,使得开发者能够快速地发布和调用WebService。它支持Java和多种Web容器,如Tomcat,Jetty等。 2. **跨平台**:AXICE是基于Java的,因此可以运行在任何支持Java的...

    基于axis2实现的webservice简单实现(客户端+服务端)。

    【标题】中的“基于axis2实现的webservice简单实现(客户端+服务端)”表明了本文将探讨如何使用Apache Axis2框架来创建和消费Web服务。Apache Axis2是Apache软件基金会开发的一个Web服务引擎,它提供了高效且灵活的...

    经典入门:Axis2创建webservice.pdf

    - 二进制包 (`axis2-1.4.1-bin.zip`) 包含了 Axis2 运行时环境,而 WAR 文件 (`axis2-1.4.1-war.zip`) 可以用于在应用服务器(如 Tomcat)上部署 Axis2。 2. **部署 Axis2 在 Tomcat** - 将下载的 WAR 文件放到 ...

    Java-tomcat-axis2开发webservice返回json数据

    标题“Java-tomcat-axis2开发webservice返回json数据”涉及的是使用Java、Tomcat服务器以及Axis2框架来创建Web服务,并返回JSON格式的数据。这是一个常见的技术组合,用于构建RESTful API或者提供服务化接口。下面...

    axis2-1.8.0apache-cxf-3.4.4.rar

    Apache Axis2是Apache软件基金会开发的一个SOAP(简单对象访问协议)引擎,它是一个完整的Web服务框架。该框架提供了一种高效、灵活的方式来创建和部署Web服务。Axis2的核心功能包括: 1. **SOAP处理**:Axis2能够...

    axis2-1.7.4完整资源包.zip

    Axis2是Apache软件基金会开发的一个开源Web服务引擎,它提供了高度模块化和可扩展的架构,使得开发和部署Web服务变得更加简单。这个“axis2-1.7.4完整资源包.zip”包含了 Axis2 的两个主要版本:axis2-1.7.4-bin 和 ...

Global site tag (gtag.js) - Google Analytics