`
bnmnba
  • 浏览: 293595 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Maven项目中使用Axis1整合Spring配置

 
阅读更多

webservice有两大类:RPC和Document。

共有五种风格:RPC/encoded 、RPC/literal、Document/literal、Document/literal wrapped、Document/literal non-wrapped

RPC/encoded :可读性高。格式验证困难,且性能受限于其格式的解析,不被ws-i接受

RPC/literal :可读性高。格式验证困难,ws-i接受

Document/literal:格式验证简单ws-i有条件接受。无方法名,可读性差。

Document/literal wrapped:格式验证简单ws-i接受。有方法名,可读性非常差。不支持方法重载。

Document/literal non-wrapped:格式验证简单ws-i接受方法名,可读性非常差。支持方法重载。

 

其中Document格式被任务是趋势,RPC是较为陈旧的方式,但为什么要用RPC/encoded?

很简单已经存在的项目正在使用,而改造费用太大。

所以要用十年前的axis1(2006年的1.4版,相比其他webservice实现,其性能是最差的) !

 

方法: 建立一个maven webapp项目,加入相关依赖。添加springmvc的servlet和axis的servlet。添加类和wsdd文件。关键代码如下。

 

除了spring自己的包,还需要依赖:

 

	<dependency>
	  <groupId>org.apache.axis</groupId>
	  <artifactId>axis</artifactId>
	  <version>1.4</version>
	</dependency>
	<dependency>
	  <groupId>commons-discovery</groupId>
	  <artifactId>commons-discovery</artifactId>
	  <version>0.5</version>
	</dependency>
	<dependency>
	  <groupId>javax.persistence</groupId>
	  <artifactId>persistence-api</artifactId>
	  <version>1.0.2</version>
	</dependency>
	<dependency>
	  <groupId>javax.xml.rpc</groupId>
	  <artifactId>javax.xml.rpc-api</artifactId>
	  <version>1.1.1</version>
	</dependency>
	<dependency>
	  <groupId>wsdl4j</groupId>
	  <artifactId>wsdl4j</artifactId>
	  <version>1.6.3</version>
	</dependency>

 

web.xml同级增加文件: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="AdminService" provider="java:MSG">
              <parameter name="allowedMethods" value="AdminService" />
              <parameter name="enableRemoteAdmin" value="false" />
              <parameter name="className" value="org.apache.axis.utils.Admin" />
              <namespace>http://xml.apache.org/axis/wsdd/</namespace>
       </service>
       <service name="Version" provider="java:RPC">
              <parameter name="allowedMethods" value="getVersion" />
              <parameter name="className" value="org.apache.axis.Version" />
       </service>     
       <!-- 自定义服务 -->
       <service name="myWebService" provider="java:RPC">
              <parameter name="className"
                     value="test.HelloWorldWebService" />
              <parameter name="allowedMethods" value="*" />
       </service>
       <transport name="http">
              <requestFlow>
                     <handler type="URLMapper" />
              </requestFlow>
       </transport>
</deployment>

 

 

web.xml需要增加:

 

	<!-- Spring MVC配置 -->
	<servlet>
		<servlet-name>spring</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<!-- 可以自定义servlet.xml配置文件的位置和名称,默认为WEB-INF目录下,名称为[<servlet-name>]-servlet.xml,如spring-servlet.xml
			<init-param>
				<param-name>contextConfigLocation</param-name>
				<param-value>/WEB-INF/spring-servlet.xml</param-value>  默认
			</init-param>
			-->
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>spring</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>
	
<!--axis 需要引入的 Servlet -->
	<servlet>
		<servlet-name>axis</servlet-name>
		<servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
		<load-on-startup>2</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>axis</servlet-name>
		<url-pattern>/services/*</url-pattern><!--axis 的 Web Service 的 Web 发布路径 -->
	</servlet-mapping>

 

 

webservice类:

 

package test;


public class HelloWorldWebService implements HelloWorldRemote {
	//private HelloWorldRemote helloWorld;

	protected void onInit() throws Exception {
	}

	public String getMessage(String name) {
		return "xxxx";
		// 在 Spring 容器中获取 Bean 的实例
		//helloWorld = (HelloWorldRemote) SpringUtil.getBean("myHelloWorldBean");
		// 执行 Bean 中的相同的方法
		//String msg=helloWorld.getMessage(name);
		//return msg;
	}
}

package test;
//Spring 工程中要使用的接口文件
public interface HelloWorldRemote
{
       public String getMessage(String name);
}

 

 

 

 

部署到tomcat,浏览器访问:http://localhost:8080/front/services/myWebService?wsdl

front是指项目名,可由mavn的pom或者eclipse的项目属性指定。

一切正常的话(这种概率非常小,很可能在启动时就出现了一些错误。缺少类什么了。)可以看到如下代码:

 

<wsdl:definitions xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://192.168.1.6:8080/front/services/myWebService" xmlns:intf="http://192.168.1.6:8080/front/services/myWebService" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://192.168.1.6:8080/front/services/myWebService">
<!--
WSDL created by Apache Axis version: 1.4
Built on Apr 22, 2006 (06:55:48 PDT)
-->
<wsdl:message name="getMessageRequest">
<wsdl:part name="name" type="soapenc:string"></wsdl:part>
</wsdl:message>
<wsdl:message name="getMessageResponse">
<wsdl:part name="getMessageReturn" type="soapenc:string"></wsdl:part>
</wsdl:message>
<wsdl:portType name="HelloWorldWebService">
<wsdl:operation name="getMessage" parameterOrder="name">
<wsdl:input message="impl:getMessageRequest" name="getMessageRequest"></wsdl:input>
<wsdl:output message="impl:getMessageResponse" name="getMessageResponse"></wsdl:output>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="myWebServiceSoapBinding" type="impl:HelloWorldWebService">
<wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="getMessage">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="getMessageRequest">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://test" use="encoded"/>
</wsdl:input>
<wsdl:output name="getMessageResponse">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://192.168.1.6:8080/front/services/myWebService" use="encoded"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="HelloWorldWebServiceService">
<wsdl:port binding="impl:myWebServiceSoapBinding" name="myWebService">
<wsdlsoap:address location="http://192.168.1.6:8080/front/services/myWebService"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>

 

 

客户端:

 

package test.axis14;

import java.net.MalformedURLException;
import java.rmi.RemoteException;

import javax.xml.rpc.ServiceException;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;

public class AxisClient {

	public static void main(String[] args) {
		//String endPoint = "http://127.0.0.1:8081/axis/services/SCService?wsdl";
		String endPoint = "http://127.0.0.1:8080/front/services/myWebService?wsdl";
		 String operation = "getMessage";//
		 Service service = new Service();
		 String result = "";
		 try {
		 Call call = (Call) service.createCall();
		  call.setTargetEndpointAddress(new java.net.URL(endPoint));
		  call.setOperationName(operation);
		 //ִ
		  result = (String) call.invoke(new Object[] { " 1" });
		  System.out.println(result);
		  } catch (ServiceException e) {
		  e.printStackTrace();
		  } catch (MalformedURLException e) {
		   e.printStackTrace();
		} catch (RemoteException e) {
		   e.printStackTrace();
		 }

	}

}

 

 

 参考:http://blog.csdn.net/thinker28754/article/details/2318236

http://www.ibm.com/developerworks/library/ws-whichwsdl/index.html

http://axis.apache.org/axis/java/index.html

 

分享到:
评论

相关推荐

    Axis2与Spring整合发布多个WebService

    1. **添加依赖**:在Maven项目中,需要在pom.xml文件中添加Axis2和Spring的相关依赖。确保版本号与项目兼容,以避免潜在的问题。 2. **配置Spring**:创建一个Spring配置文件(如`services-context.xml`),在这个...

    Maven 项目 springMVC_Mybatis_Axis2_Task 整合

    总之,Maven项目中的springMVC、Mybatis、Axis2和Task的整合是一项综合性的技术实践,涉及到多个层次的配置和代码编写。理解并掌握这些组件的特性和整合方法,对于提升Java开发技能和解决实际问题具有重要意义。

    spring axis2整合

    整合Spring和Axis2的主要目的是利用Spring的灵活性和管理能力来控制Axis2的生命周期,以及通过Spring的IoC容器管理Web服务的部署和调用。这样可以避免在代码中硬编码Web服务客户端和服务器端的实例化,使得代码更加...

    axis2-spring-1.5.4.jar

    本文将详细介绍如何在项目中使用axis2-spring-1.5.4.jar这个jar包,以便在Axis2中集成Spring。 首先,让我们了解为什么需要整合 Axis2 和 Spring。Axis2虽然在处理Web服务方面表现出色,但它的依赖管理和配置相对...

    spring-axis2-test.rar_Axis2 Spring3_axis2_axis2 spring3_axis2 s

    axis2-test.rar_Axis2 Spring3_axis2_axis2 spring3_axis2 s”指的是一个关于Spring和Axis2集成的示例项目,它包含了一组用于演示如何在Spring框架中使用Apache Axis2来开发和部署Web服务的源代码和配置文件。...

    axis 和spring 集成

    "工具"标签可能意味着会介绍一些辅助工具,比如IDE插件、构建工具(如Maven或Ant)以及服务器环境(如Tomcat),这些工具在整合Axis和Spring时可能会用到。 在提供的文件名称列表中,我们看到: - `.classpath`和`....

    spring集成axis发布webservice源码

    spring集成axis发布webservice源码 spring集成axis发布webservice源码 spring集成axis发布webservice源码 spring集成axis发布webservice源码

    maven-spring-mybatis-webservice整合

    1. 创建Maven项目,并在pom.xml中配置好依赖。 2. 配置Spring的ApplicationContext,定义Bean的定义和依赖。 3. 配置MyBatis的SqlSessionFactory和Mapper接口。 4. 使用Spring MVC构建Web层,定义Controller,处理...

    springboot+axis1.4

    当我们需要在Spring Boot项目中集成Axis1.4来实现Web服务时,我们需要了解以下几个关键知识点: 1. **Spring Boot与Web服务**:Spring Boot支持多种Web服务技术,包括JAX-WS(Java API for XML Web Services)和JAX...

    spring3 + axis2

    在实际项目中,"Spring3 + Axis2"的整合可能涉及到源码级别的工作,包括编写服务接口和服务实现,配置Spring容器,以及处理Axis2的部署描述符。同时,开发过程中会用到一系列工具,如IDE(如Eclipse、IntelliJ IDEA...

    是tuscany与spring,axis整合所有的jar包,已解决冲突问题。

    根据提供的文件信息,本文将详细解析Tuscany与Spring、Axis整合的相关知识点,以及如何解决在整合过程中可能遇到的jar包冲突问题。 ### Tuscany简介 Tuscany项目是Apache软件基金会的一个顶级项目,专注于提供一个...

    springboot使用axis1.4的demo

    在本文中,我们将深入探讨如何在Spring Boot项目中集成并使用Axis1.4来发布Web服务。Spring Boot以其简化配置和快速开发能力而受到广泛欢迎,而Axis1.4是Apache软件基金会的一个开源项目,主要用于生成和消费SOAP ...

    maven入门整合SpringMVC登录+调用天气接口实例

    在本项目中,Maven被用来整合SpringMVC和实现接口调用。Maven的POM(Project Object Model)文件是核心,它包含了项目的配置信息,如依赖库、构建目标和插件等。通过在POM.xml文件中声明所需的SpringMVC和相关库,...

    springboot(5) 整合cxf提供webservice服务

    在本教程中,我们将深入探讨如何使用Spring Boot与Apache CXF整合来创建并提供Web服务。Spring Boot以其简化Java应用程序开发的特性而受到广泛欢迎,而CXF则是一个流行的开源框架,用于构建和消费Web服务。当我们...

    webservice整合spring的需要的jar(在项目的lib里)

    标题中提到的"webservice整合spring的需要的jar(在项目的lib里)",意味着在构建一个整合了Spring和Web服务的项目时,需要在项目的库(lib)目录下包含特定的JAR文件。这些JAR文件通常包含了实现Web服务调用和...

    EOVA框架整合WEBSERVICE ,eclipse maven环境 简单实用。内含说明.

    3. **引入EOVA框架**:按照EOVA的官方文档或提供的eova搭建webservice.docx文档,配置项目中的 EOVA 相关组件,包括Spring配置、数据库连接等。 4. **编写WebService接口**:创建一个Java类作为WebService的接口,...

    axis2 开发webservice需要的完整jar

    4. Spring配置:使用Spring的XML配置文件或Java配置来声明Axis2的服务和依赖,简化部署和维护。 五、压缩包中的jar文件 "用到的jar"可能包括: - axis2-adb.jar:Axis2数据绑定模块,用于处理XML到Java对象的转换。...

    ssm+maven+webService

    在"zppssm"这个项目中,开发者可能已经实现了上述所有功能,并将它们整合在一个完整的应用中。这包括了创建和消费WebService服务,使用Spring的定时任务和拦截器,以及Maven的构建流程。这样的项目结构有利于团队...

    springMVC_Mybatis_Axis2_Task java Project

    【描述】"springMVC_Mybatis_Axis2_Task 整合的 Maven 项目 代码"说明了这是一个已经完成整合的项目,其中包含了Spring MVC用于处理Web应用的业务逻辑,MyBatis作为持久层框架来管理数据库操作,Axis2用于提供Web...

    idea ssm 框架整合

    SSM框架整合是Java开发中常见的一种技术组合,它涵盖了Spring、Spring MVC和MyBatis三个核心组件。Spring作为全能的IOC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)容器...

Global site tag (gtag.js) - Google Analytics