`

Axis+Spring

    博客分类:
  • Axis
阅读更多

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);
	}
}

 

  • 大小: 10.9 KB
分享到:
评论

相关推荐

    WebService(Axis+spring+jpa)

    在Axis+Spring+jpa的组合中,JPA使得数据访问更加简单,通过实体管理和事务控制,确保数据操作的正确性和一致性。 这个项目的实施步骤可能包括以下环节: 1. 创建Java类:定义业务逻辑所需的实体类,这些类将被JPA...

    axis2+spring webservice

    标题中的“axis2+spring webservice”指的是使用Apache Axis2框架与Spring框架集成来开发Web服务。Apache Axis2是Java环境中广泛使用的Web服务引擎,它提供了高性能、灵活且可扩展的架构。Spring框架则是一个全面的...

    axis2+spring整合实例

    描述提到"spring+axis2整合",这通常意味着开发者可以利用Spring的管理能力,如Bean的生命周期管理和依赖注入,来更好地控制Axis2中的服务。"项目下载之后就能使用"表明这是一个可以直接运行的示例项目,无需复杂的...

    axis2+spring+ibatis

    标题中的"axis2+spring+ibatis"是一个典型的Java企业级应用架构组合,它涉及到三个主要的技术组件:Apache Axis2、Spring框架和iBATIS。接下来,我们将详细探讨这三个技术以及它们在项目集成中的作用。 1. Apache ...

    axis2和axis2+spring发布服务指南

    标题中的“axis2和axis2+spring发布服务指南”指的是如何使用Apache Axis2框架结合Spring框架来部署和发布Web服务。Axis2是Apache软件基金会开发的一个用于构建和部署Web服务的开源框架,它基于Java语言并支持SOAP和...

    axis2 + spring3.2.0

    标题中的"axis2 + spring3.2.0"指的是在Java Web开发中,将Apache Axis2服务框架与Spring 3.2.0版本的依赖管理相结合的技术应用。Apache Axis2是一个用于构建Web服务和SOA(Service-Oriented Architecture,面向服务...

    axis2+Spring提供WebService服务

    Axis2和Spring框架的结合提供了一种高效且灵活的方式来创建和管理WebService。让我们深入了解一下这两个技术以及它们如何协同工作。 首先,Apache Axis2是Java平台上一个成熟的Web服务引擎,专门用于处理SOAP消息。...

    axis2+spring+hibernate Webservice

    标题 "axis2+spring+hibernate Webservice" 指出的是一个基于Java的开源项目,它结合了三个关键的技术框架:Axis2、Spring和Hibernate。这些技术都是企业级应用开发中的重要组件,用于构建高效、灵活且可扩展的服务...

    axis2+spring2.5整合(webservice)

    当我们谈论“Axis2+Spring2.5整合(Web服务)”时,我们指的是将Apache Axis2和Spring框架结合在一起,以便更高效地开发和管理Web服务。 Apache Axis2是Apache软件基金会开发的一个Web服务引擎,它提供了SOAP消息...

    在自己的项目中利用axis2+spring发布webservice与客户端调用包括session

    标题中的“在自己的项目中利用axis2+spring发布webservice与客户端调用包括session”指出的是一个关于在实际项目开发中如何使用Axis2和Spring框架来发布Web服务,并且涉及了Web服务客户端调用以及会话(session)...

    MYECLIPSE AXIS2 + SPRING 文件上传

    【标题】"MYECLIPSE AXIS2 + SPRING 文件上传"所涉及的知识点主要集中在三个核心领域:MYECLIPSE开发环境、AXIS2服务框架和SPRING框架,以及文件上传技术。MYECLIPSE是一款强大的集成开发环境(IDE),常用于Java...

    axis +sping开发实例

    【axis +spring 开发 webservice】的实例教程 在现代Web服务开发中,Apache Axis和Spring框架的结合使用可以提供高效、灵活的解决方案。本文档将深入探讨如何使用这两个工具来构建Web服务,包括环境配置、代码开发...

    mybatis+spring MVC+webservice axis例子程序实现

    首先,该工程实现了spring MVC、mybatis、axis webservice功能 其次,这个工程很简单,只做了最简单的功能实现 再次,数据库要自己准备 最后,该工程里的src目录下,有一个readme.txt,请下载者仔细阅读,里面有...

    axis+webservice spring

    通过axis2与spring进行集成,发布webservice服务,

    axis2+hibernate+Spring测试案例

    在hibernate spring项目基础上通过aixs2-1.4.1把程序发布成webService,包括aixs2以对象数组和AXIOM方式处理map,list的程序代码;和aixs2-1.4-1的jar包

    axis2+spring 实现webservice需要jar包

    在构建基于Axis2和Spring的Web服务时,我们需要一系列的依赖库来支持整个框架的运行。这些库提供了从XML解析到服务部署的各种功能。以下是标题和描述中提及的关键知识点及其详细解释: 1. **Axis2**:Apache Axis2...

    cxf+spring+axis包

    【标题】"cxf+spring+axis包"指的是在Java开发环境中使用Apache CXF、Spring框架和Axis工具进行Web服务集成的一种技术组合。这个压缩包包含的版本是cxf-2.4.1、axis-1.4以及适用于Spring 3.0的库。 【描述】"cxf-...

    axis1.4+mybatis3+spring实现webservice

    在IT行业中,构建高效、可扩展的企业级应用是至关重要的,而 Axis1.4、MyBatis3 和 Spring3 的集成则为实现这样的目标提供了一种强大的解决方案。本项目通过将这三个框架组合在一起,旨在创建一个能够提供Web服务的...

    struct2.3+spring3.1+mybatis3.3+axis2

    公司项目需要,搭建了SSM框架,当初想更好的熟悉SSM框架的架构及其原理,所以未使用maven,资源中包括所有的jar包,能直接运行在tomcat服务器,框架中使用了Spring的自动扫描,注解注入,AOP异常日志记录,AOP事务,...

Global site tag (gtag.js) - Google Analytics