Axis2实现 web service接口开发 + 客户端调用

一、 新建一个web项目,

1.打开axis2.war包,将conf,lib,modules三个文件夹复制到项目的WEB-INF文件夹下,再在WEB-INF目录下新建一个services文件夹,然后在services文件下新建一个文件夹(任意取名);

再新建META-INF文件夹,最后再新增services.xml,接口信息就写在这里面。

具体路径:WEB-INF/services/myservice/META-INF/services.xml

2.配置 web.xml 。加载axis2 和 applicationContext.xml。

<!-- 加载配置文件 -->
     <listener>
        <listener-class>
            org.springframework.web.context.ContextLoaderListener
        </listener-class>
    </listener>
   <context-param> 
        <param-name>contextConfigLocation</param-name>         
        <param-value>classpath:/*.xml</param-value> 
    </context-param> 
    <!-- 加载axis2 -->
    <servlet>
        <display-name>Apache-Axis Servlet</display-name>
        <servlet-name>axisServlet</servlet-name>
        <servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>axisServlet</servlet-name>
        <url-pattern>/services/*</url-pattern>
    </servlet-mapping>

3.然后在项目中的src下创建包,再在包下创建一个类,用来提供web service接口。

package com.axis.service;
public class TestAxis {
    public String test(String str) {
        return "test " + str;
    }
    public String printHello(String name) {
        return "hello " + name;
    }
    public String printWorld(String name) {
        return "World " + name;
    }
}

4.配置 services.xml文件。

<?xml version="1.0" encoding="UTF-8"?>
<service name="axisService" targetNamespace="http://e3.org/axis2Namespace/soapws">
    <!-- 服务名描述 -->
    <description>axis2 接口开发范例</description>
    <!-- 命名空间可以自由定义 -->
    <schema schemaNamespace="http://e3.org/axis2Namespace/soapws" />
    <!-- 方式一、直接写类位置 -->
    <!-- <parameter name="ServiceClass">com.axis.service.TestAxis</parameter> -->
    <!-- 方式二、指向的类位置,通过applicationContext.xml 配置 -->
    <parameter name="SpringBeanName">CrjWs</parameter>
    <parameter name="ServiceObjectSupplier">
       org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier
    </parameter> 
    <!-- 方式一 -->
    <operation name="test"> 
      <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" /> 
    </operation> 
    <operation name="printHello"> 
      <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" /> 
    </operation> 
    <operation name="printWorld"> 
      <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" /> 
    </operation>  
    <!-- 方式二 -->
   <!--     
   <messageReceivers>
        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
            class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
            class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
    </messageReceivers> 
    -->
    <!-- 屏蔽的接口 -->
    <excludeOperations>
         <operation>printHello</operation>
    </excludeOperations>
</service>

5.配置文件 applicationContext.xml。

<!--WebService 入口的 bean -->
    <bean id ="CrjWs" class="com.axis.service.TestAxis" />

6. 目录结构。

7.运行该项目,使用浏览器访问地址

http://localhost:8080/webserviceTest/services/axisService?wsdl

如果有异常信息,那就返回看一下是jar包缺失还是其它配置原因,自己从头细心再看看哪里是否没配置。

如果成功,会在页面上显示一份wsdl页面。

二、下面是我遇到的一些小问题。

1、报 The SERVICE_OBJECT_SUPPLIER parameter is not specified。

查看了一下发现是没有写监听器。在web.xml文件中添加

<listener>
  <listener-class>
       org.springframework.web.context.ContextLoaderListener
  </listener-class>
</listener>

如果使用 SpringBeanName 的话,需要加载 ServiceObjectSupplier。

<parameter name="SpringBeanName">CrjWs</parameter>
  <parameter name="ServiceObjectSupplier">
         org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier
  </parameter>

三、客户端调用。

package com.test;
import javax.xml.namespace.QName;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
public class webTest {
    public static void main(String[] args) {
        String _newendPoint =
             "http://localhost:8080/webserviceTest/services/axisService?wsdl";
        String _newNameSpace = 
                  "http://e3.org/axis2Namespace/soapws";
        try {
            Service service = new Service();
            Call call = (Call) service.createCall();
            call.setTargetEndpointAddress(new java.net.URL(_newendPoint));
            call.setOperationName(new QName(_newNameSpace, "test"));
            String s = (String) call.invoke(new Object[] {"test123"});
            System.out.println(s);
            // call.setOperationName(new QName(_newNameSpace,"printHello"));
            // s = (String) call.invoke(new Object[] { "printHello456"});
            // System.out.println(s);
            call.setOperationName(new QName(_newNameSpace, "printWorld"));
            s = (String) call.invoke(new Object[] { "printWorld789" });
            System.out.println(s);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}
时间: 2024-12-18 02:31:56

Axis2实现 web service接口开发 + 客户端调用的相关文章

Axis实现 web service接口开发 + 客户端调用

看到网上挺多人找webservice axis开发案例,但是网上较多的都是有点乱,初学者不太容易看得懂,所以最近看到自己终于有了点空闲时间,就上传了一份比较简单的webservice axis的完整案例. 只适用于初学者. 一.新建一个web项目 导入lib包. 2.配置 web.xml <!-- axis 配置 -->   <servlet>         <display-name>Apache-Axis Servlet</display-name>

Web Service接口开发流程(转)

1.  设计数据库物理结构(可能体现为TABLE). 2.  设计数据库的逻辑结构(可能为VIEW OR PROCEDURE). 3.  对VIEW OR PROCEDURE 等数据库对象进行授权. 4.  对数据库对象授权文档收集.(保证以后移动数据库时快速对数据库用户进行授权) 5.  设计业务类库. 6.  把业务类库函数的文档写到接口系统数据库以存档.(由系统自动生成函数的唯一ID号) 7.  根据函数的唯一ID号设计封装成Web Service接口. 8.  把接口系统数据库已存档的文

使用JAX-RS进行Web Service接口开发

一.服务器端 1.创建web项目,项目名称为 WS_Server 2.创建包,并在该包下创建TestService类: package com.test.webservice; public class TestService { public static final String TITLE = "此消息由WebService服务器端返回: "; public String test(String msg){ return TITLE + msg; } } 3.将TestServi

java中调用kettle作业以及生成web service 接口

第一步:(前提将kett中lib下的所有jar包拷贝到java项目lib目录)创建并连接资源库,如果只用这一个工作空间,可以将此段代码放入静态代码块,代码如下: KettleEnvironment.init(); //创建资源库对象,此时的对象还是一个空对象 KettleDatabaseRepository repository = new KettleDatabaseRepository(); //创建资源库数据库对象,类似我们在spoon里面创建资源库 //(数据库连接名称,数据库类型,连接

转:Web Service入门开发简单例子--很详尽

.net平台内建了对Web Service的支持,包括Web Service的构建和使用.与其它开发平台不同,使用.net平台,你不需要其他的工具或者SDK就可以完成Web Service的开发了..net Framework本身就全面支持Web Service,包括服务器端的请求处理器和对客户端发送和接受SOAP消息的支持.下来我们就一步一步的用Microsoft Visual Studio .net 2005(后面简称VS.NET 2005)创建和使用一个简单的Web Service. 2.

Web Service (四) 手动发布Web Service接口-CXF与Spring集成

当我们发布完Web Service接口之后有两种方式可以调用Web service服务,一种是通过动态客户端方式,另一种是引用服务端的接口,引用服务端接口的方式对于客户端同服务器端耦合比较大,而使用WSDL的方式客户端不知道服务端的存在就可以调用服务器的方法. 下面是项目的结构图: 1.Web Service发布项目 2.编写服务端接口类以及实现类,如下,同上一篇自动发布接口,多了一个注解@WebService package com.test.webservice; import javax.

新手Axis2 发布Web Service之路

由于公司的需求,需要写几个银行接口写模拟器(Mock Server),此次接口需要发布成一个WEB Service. 一开始,我以为只要负责写接口的业务层就行了,具体的框架或是环境搭建可以不用管.在与开发沟通完之后,因为本人对Web Service发布也不懂,完全属于没有概念的那种,开发愿意帮忙搭建一个. 在此期间呢,我开始写业务层,把3个接口的业务层花了一天的时间写完了,加了一些数据库查询的方法以及数据库新的字段以满足此次的业务需求. 开发也把WEB Service的一个小Demo做好了,利用

通过ajax访问Tomcat服务器web service接口时出现No &#39;Access-Control-Allow-Origin&#39; header问题的解决办法

问题描述 通过ajax访问Web服务器(Tomcat7.0.42)中的json web service接口的时候,报以下跨域问题: XMLHttpRequest cannot load http://localhost:8080/get-employees-by-name/name/admin. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhos

免费的天气Web Service接口

免费的天气Web Service接口 在android应用当中很多时候需要获取天气的信息,这里提供怎么获取天气信息: 1. http://www.ayandy.com/Service.asmx?wsdl 官网:http://www.ayandy.com 2. http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl 网站:http://www.webxml.com.cn/zh_cn/index.aspx ,此网站提供各种web