Axis1整合Spring比较简单,这种便利得益于Spring的ServletEndpointSupport类支持
1、导入jar包
1.1、axis1的jar包
activation.jar
axis.jar
commons-discovery.jar
commons-logging.jar
jaxrpc.jar
log4j-1.2.8.jar
mailapi_1_3_1.jar
wsdl4j-1.5.1.jar
1.2、spring相关jar包
2、创建服务端
2.1、创建接口
package com.axis.service; public interface HelloWorld { public String getMessage(String message); }
2.2、创建实现类
package com.axis.service.impl; import com.axis.service.HelloWorld; public class HelloWorldImpl implements HelloWorld { @Override public String getMessage(String message) { return "---------Axis Server-------" + message; } }
2.3、创建远程接口
package com.axis.service; import java.rmi.Remote; import java.rmi.RemoteException; public interface RemoteHelloWorld extends Remote { public String getMessage(String message) throws RemoteException; }
2.3、创建WEB服务(spring与axis1对接,需要做一个ServletEndpointSupport继承实现WebService)
package com.axis.service; import java.rmi.RemoteException; import javax.xml.rpc.ServiceException; import org.springframework.remoting.jaxrpc.ServletEndpointSupport; public class JaxRpcHelloWorld extends ServletEndpointSupport implements RemoteHelloWorld { private HelloWorld helloWorld; protected void onInit() throws ServiceException { helloWorld = (HelloWorld) getApplicationContext().getBean("helloWorldService"); } public String getMessage(String message) throws RemoteException { return helloWorld.getMessage(message); } }
这个类有两个重要的方法getMessage()和onInit()方法的实现。在getMessage()中,你看到真实的处理和HelloWorld接口的一个实例相似,HelloWorld接口和RemoteHelloWorld几口根据同样的名称共享方法,但是HelloWorld没有继承Remote,方法也没抛出RemoteException,HelloWorld接口地实现可以在很多环境下通过servlet容器来进行简单的测试,因为他和java远程接口没有关系,我们可可以仅仅使用JaxRpcHelloWorld类代表RemoteHelloWorld,但是将消弱对于RemoteHelloWorld接口的可重用性实现,因为所有的方法必须抛出RemoteExceptio和继Remote,使用HelloWorld接口,我们能够使他在某些环境中更简单的使用
2.4、配置服务端
2.4.1、服务端的spring配置文件applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation=" http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> <!-- 接口的具体实现类 --> <bean id="helloWorldService" class="com.axis.service.impl.HelloWorldImpl" /> </beans>
2.4.2、部署axis的WebService服务,在web-inf下加入server-config.wsdd
<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> <handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper" /> <service name="HelloWorld" provider="java:RPC"> <parameter name="className" value="com.axis.service.JaxRpcHelloWorld" /> <parameter name="allowedMethods" value="*" /> </service> <transport name="http"> <requestFlow> <handler type="URLMapper" /> </requestFlow> </transport> </deployment>
其中最重要的是service标签,他定义了WS的名字,有两个子标签,一个用来指定服务实现类的全名,一个用来定义服务中要被暴露的服务方法过滤器
指定java:RPC表明这是一个RPC风格的服务
2.4.3、配置web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:/applicationContext.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- axis --> <servlet> <display-name>Apache-Axis Servlet</display-name> <servlet-name>axis</servlet-name> <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>axis</servlet-name> <url-pattern>/services/*</url-pattern> </servlet-mapping> </web-app>
部署这个web服务,我们在浏览器中运行如下地址(根据你自己的webapp)
http://localhost:8080/services 可以看到你定义的web服务如下:
点击wsdl链接可以看到wdsl
3、客户端测试
package com.axis.client; import javax.xml.namespace.QName; import javax.xml.rpc.Call; import org.apache.axis.client.Service; import org.junit.Before; import org.junit.Test; public class AxisClientTest { private String nameSpaceUri = "http://localhost:8080/services/HelloWorld"; private String wsdlUrl = nameSpaceUri + "?wsdl"; private Service service; private Call call; @Before public final void init() throws Exception { // 创建调用对象 service = new Service(); call = (Call) service.createCall(); // 调用 远程方法 call.setOperationName(new QName(nameSpaceUri, "getMessage")); // 设置URL call.setTargetEndpointAddress(wsdlUrl); } @Test public final void testGetMessage() throws Exception { // 设置参数 String message = "HelloWorld"; // 执行远程调用,同时获得返回值 String str = (String) call.invoke(new Object[] { message }); System.out.println(str); } }
相关推荐
在Axis+Spring+jpa的组合中,JPA使得数据访问更加简单,通过实体管理和事务控制,确保数据操作的正确性和一致性。 这个项目的实施步骤可能包括以下环节: 1. 创建Java类:定义业务逻辑所需的实体类,这些类将被JPA...
标题中的“axis2+spring webservice”指的是使用Apache Axis2框架与Spring框架集成来开发Web服务。Apache Axis2是Java环境中广泛使用的Web服务引擎,它提供了高性能、灵活且可扩展的架构。Spring框架则是一个全面的...
描述提到"spring+axis2整合",这通常意味着开发者可以利用Spring的管理能力,如Bean的生命周期管理和依赖注入,来更好地控制Axis2中的服务。"项目下载之后就能使用"表明这是一个可以直接运行的示例项目,无需复杂的...
标题中的"axis2+spring+ibatis"是一个典型的Java企业级应用架构组合,它涉及到三个主要的技术组件:Apache Axis2、Spring框架和iBATIS。接下来,我们将详细探讨这三个技术以及它们在项目集成中的作用。 1. Apache ...
标题中的“axis2和axis2+spring发布服务指南”指的是如何使用Apache Axis2框架结合Spring框架来部署和发布Web服务。Axis2是Apache软件基金会开发的一个用于构建和部署Web服务的开源框架,它基于Java语言并支持SOAP和...
标题中的"axis2 + spring3.2.0"指的是在Java Web开发中,将Apache Axis2服务框架与Spring 3.2.0版本的依赖管理相结合的技术应用。Apache Axis2是一个用于构建Web服务和SOA(Service-Oriented Architecture,面向服务...
Axis2和Spring框架的结合提供了一种高效且灵活的方式来创建和管理WebService。让我们深入了解一下这两个技术以及它们如何协同工作。 首先,Apache Axis2是Java平台上一个成熟的Web服务引擎,专门用于处理SOAP消息。...
标题 "axis2+spring+hibernate Webservice" 指出的是一个基于Java的开源项目,它结合了三个关键的技术框架:Axis2、Spring和Hibernate。这些技术都是企业级应用开发中的重要组件,用于构建高效、灵活且可扩展的服务...
当我们谈论“Axis2+Spring2.5整合(Web服务)”时,我们指的是将Apache Axis2和Spring框架结合在一起,以便更高效地开发和管理Web服务。 Apache Axis2是Apache软件基金会开发的一个Web服务引擎,它提供了SOAP消息...
标题中的“在自己的项目中利用axis2+spring发布webservice与客户端调用包括session”指出的是一个关于在实际项目开发中如何使用Axis2和Spring框架来发布Web服务,并且涉及了Web服务客户端调用以及会话(session)...
【标题】"MYECLIPSE AXIS2 + SPRING 文件上传"所涉及的知识点主要集中在三个核心领域:MYECLIPSE开发环境、AXIS2服务框架和SPRING框架,以及文件上传技术。MYECLIPSE是一款强大的集成开发环境(IDE),常用于Java...
【axis +spring 开发 webservice】的实例教程 在现代Web服务开发中,Apache Axis和Spring框架的结合使用可以提供高效、灵活的解决方案。本文档将深入探讨如何使用这两个工具来构建Web服务,包括环境配置、代码开发...
首先,该工程实现了spring MVC、mybatis、axis webservice功能 其次,这个工程很简单,只做了最简单的功能实现 再次,数据库要自己准备 最后,该工程里的src目录下,有一个readme.txt,请下载者仔细阅读,里面有...
通过axis2与spring进行集成,发布webservice服务,
在hibernate spring项目基础上通过aixs2-1.4.1把程序发布成webService,包括aixs2以对象数组和AXIOM方式处理map,list的程序代码;和aixs2-1.4-1的jar包
在构建基于Axis2和Spring的Web服务时,我们需要一系列的依赖库来支持整个框架的运行。这些库提供了从XML解析到服务部署的各种功能。以下是标题和描述中提及的关键知识点及其详细解释: 1. **Axis2**:Apache Axis2...
【标题】"cxf+spring+axis包"指的是在Java开发环境中使用Apache CXF、Spring框架和Axis工具进行Web服务集成的一种技术组合。这个压缩包包含的版本是cxf-2.4.1、axis-1.4以及适用于Spring 3.0的库。 【描述】"cxf-...
在IT行业中,构建高效、可扩展的企业级应用是至关重要的,而 Axis1.4、MyBatis3 和 Spring3 的集成则为实现这样的目标提供了一种强大的解决方案。本项目通过将这三个框架组合在一起,旨在创建一个能够提供Web服务的...
公司项目需要,搭建了SSM框架,当初想更好的熟悉SSM框架的架构及其原理,所以未使用maven,资源中包括所有的jar包,能直接运行在tomcat服务器,框架中使用了Spring的自动扫描,注解注入,AOP异常日志记录,AOP事务,...