- 浏览: 7349311 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1546)
- 企业中间件 (236)
- 企业应用面临的问题 (236)
- 小布Oracle学习笔记汇总 (36)
- Spring 开发应用 (54)
- IBatis开发应用 (16)
- Oracle基础学习 (23)
- struts2.0 (41)
- JVM&ClassLoader&GC (16)
- JQuery的开发应用 (17)
- WebService的开发应用 (21)
- Java&Socket (44)
- 开源组件的应用 (254)
- 常用Javascript的开发应用 (28)
- J2EE开发技术指南 (163)
- EJB3开发应用 (11)
- GIS&Mobile&MAP (36)
- SWT-GEF-RCP (52)
- 算法&数据结构 (6)
- Apache开源组件研究 (62)
- Hibernate 学习应用 (57)
- java并发编程 (59)
- MySQL&Mongodb&MS/SQL (15)
- Oracle数据库实验室 (55)
- 搜索引擎的开发应用 (34)
- 软件工程师笔试经典 (14)
- 其他杂项 (10)
- AndroidPn& MQTT&C2DM&推技术 (29)
- ActiveMQ学习和研究 (38)
- Google技术应用开发和API分析 (11)
- flex的学习总结 (59)
- 项目中一点总结 (20)
- java疑惑 java面向对象编程 (28)
- Android 开发学习 (133)
- linux和UNIX的总结 (37)
- Titanium学习总结 (20)
- JQueryMobile学习总结 (34)
- Phonegap学习总结 (32)
- HTML5学习总结 (41)
- JeeCMS研究和理解分析 (9)
最新评论
-
lgh1992314:
[u][i][b][flash=200,200][url][i ...
看看mybatis 源代码 -
尼古拉斯.fwp:
图片根本就不出来好吧。。。。。。
Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传 -
ln94223:
第一个应该用排它网关吧 怎么是并行网关, 并行网关是所有exe ...
工作流Activiti的学习总结(八)Activiti自动执行的应用 -
ZY199266:
获取不到任何消息信息,请问这是什么原因呢?
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息 -
xiaoyao霄:
DestinationSourceMonitor 报错 应该导 ...
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息
Spring框架对远程访问技术提供了很好的集成机制,Spring目前支持的技术包括:
1. Remote Method Invocation (RMI)。通过 RmiProxyFactoryBean和RmiServiceExporter,Spring支持以java.rmi.Remote和java.rmi.RemoteException 定义的传统RMI接口,提供经由RMI的透明访问;
2.Spring内置的HTTP invoker远程调用机制。Spring开发团队意识到在RMI服务和基于HTTP的服务(如Hessian和Burlap)之间的空白。一方面,RMI使用Java标准的对象序列化,但很难穿越防火墙;另一方面,Hessian/Burlap能很好地穿过防火墙工作,但使用自己私有的一套对象序列化机制。因此,Spring的HTTP invoker应运而生。HTTP invoker是一个全新的远程调用模型,作为Spring框架的一部分,来执行基于HTTP的远程调用(可穿越防火墙),并使用Java的序列化机制(从而降低开发工作的难度)。当参数或返回值是复杂类型,并且不能通过Hessian的序列化机制序列化时,Http invoker就很有优势。 Spring中相应的支持类是HttpInvokerProxyFactoryBean和HttpInvokerServiceExporter;
3.Hessian。作为一个轻量级分布式组件技术,Hessian采用了自己定义的二进制协议,这似乎与目前业界大量应用SOAP的趋势背道而驰,但对于一些简单的远程访问服务,Hessian足够应对。在Spring中,通过HessianProxyFactoryBean和HessianServiceExporter两个类,我们可以透明地将需要对外提供的服务发布出去,当然这里依旧采用Caucho这家来自California的公司的二进制协议;
4.Burlap。Burlap可以说是Hessian的XML版本。Spring中的支持类包括BurlapProxyFactoryBean和BurlapServiceExporter;
5.JAX RPC(Java APIs for XML-based Remote Procedure Call)。 Spring支持通过JAX RPC访问的Web Service。事实上,Spring对于Web Service的封装相当简单,Spring提供了一个代理工厂Bean:JaxRpcPortProxyFactoryBean,能让你在应用中无缝集成一个web sevice,作为另一个Bean的协作者,JaxRpcPortProxyFactoryBean类用JAX-RPC来访问远程Web Service。
6.JMS。Spring中对应的支持类包括JmsInvokerServiceExporter和JmsInvokerProxyFactoryBean。
这里,我们着重讨论一下Spring对于Web Service的支持。这种支持包括两方面:
第一,基于JAX-RPC发布Web Service。
第二,访问Web Service。
对于需要发布为Web Service的业务逻辑bean,只需要继承Spring的ServletEndpointSupport 类即可。假设有如下业务接口以及相应的实现类:
public interface SayHello
{
public String sayHello(String who);
}
public class SayHelloImpl implements SayHello
{
public String sayHello(String who)
{
return "Hello,"+who;
}
}
如果需要将SayHelloImpl 发布为Web Service,则需要编写一个Web Service类,让该类实现SayHello接口,并继承ServletEndpointSupport类。示例如下:
public class SayHelloEndPoint extends ServletEndpointSupport implements SayHello
{
private SayHello sh;
protected void onInit()
{
this.sh = (SayHello) getWebApplicationContext().getBean("sayHello");
}
//将业务逻辑bean的业务方法公开发布为WebService
public String sayHello(String who) throws RemoteException
{
return sh.sayHello(who);
}
}
而后,定义Spring的配置文件,在配置文件中部署业务bean,示例如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="sayHello" class="com.ws.SayHelloImpl">
<property name=>
</bean >
</beans>
然后修改web.xml文件,让AxisServlet拦截某些请求 ,示例如下:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD WebApplication 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 定义AxisServlet-->
<servlet>
<servlet-name>AxisServlet</servlet-name>
<servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
</servlet>
<!-- 映射AxisServlet-->
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/axis/*</url-pattern>
</servlet-mapping>
</web-app>
在上述配置文件中,可以看到所有匹配/axis/*模式的请求都由AxisServlet处理。即:Spring发布的Web Service都在放在axis路径下。
然后编写WSDL文件,或者使用工具生成。WSDL文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<!-- wsdl的根元素,包含schema等信息-->
<deployment xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<!-- wsdl的全局配置-->
<globalConfiguration>
<parameter name="adminPassword" value="admin"/>
<parameter name="sendXsiTypes" value="true"/>
<parameter name="sendMultiRefs" value="true"/>
<parameter name="sendXMLDeclaration" value="true"/>
<parameter name="axis.sendMinimizedElements" value="true"/>
<requestFlow>
<handler type="java:org.apache.axis.handlers.JWSHandler">
<parameter name="scope" value="session"/>
</handler>
<handler type="java:org.apache.axis.handlers.JWSHandler">
<parameter name="scope" value="request"/>
<parameter name="extension" value=".jwr"/>
</handler>
</requestFlow>
</globalConfiguration>
<handler name="Authenticate" type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>
<handler name="LocalResponder" type="java:org.apache.axis.transport.local.LocalResponder"/>
<handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper"/>
<!-- 定义WebService的管理台-->
<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>
<!-- 定义自己的WebService-->
<service name="SayHelloService" provider="java:RPC">
<parameter name="allowedMethods" value="*"/>
<!-- 定义WebService的实现类-->
<parameter name="className" value="com.ws.SayHelloEndpoint"/>
</service>
<!-- 定义WebSerivice的系统服务。-->
<service name="Version" provider="java:RPC">
<parameter name="allowedMethods" value="getVersion"/>
<parameter name="className" value="org.apache.axis.Version"/>
</service>
<transport name="http">
<requestFlow>
<handler type="URLMapper"/>
<handler type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>
</requestFlow>
</transport>
<transport name="local">
<responseFlow>
<handler type="LocalResponder"/>
</responseFlow>
</transport>
</deployment>
经过上述这些步骤,可将部署在Spring的普通业务逻辑bean发布成Web Service。
Spring发布的Web Service是标准的基于SOAP协议的Web Service。因此可以使用标准客户端访问,也可以利用IoC容器来管理Web Service,利用IoC容器时,必须借助于JaxRpcPortProxyFactoryBean。
使用标准客户端访问Web Service非常简单,只需要获得WebService的URL以及方法名即可。根据上面的发布,知道Web Service的URL如下:http://localhost:8080/axis-spring/axis/SayHelloService,则客户端代码示例如下:
public class WebServiceClient
{
public static void main(String args[])
{
System.out.println("开始调用WebService");
try
{
//WebService所在的URL
String endpoint = "http://localhost:8080/axis-spring/axis/SayHelloService";
//创建Service对象,Service对用用于创建Call对象
Service service = new Service();
//创建Call对象,Call对象用于调用服务
Call call = (Call)service.createCall();
//为Call对象设置WebService的url
call.setTargetEndpointAddress(new java.net.URL(endpoint));
//为Call对象设置调用的方法名
call.setOperationName("sayHello");
//调用WebService的方法,并获得返回值
String s = (String)call.invoke(new Object[] {"刘德华"});
System.out.println(s);
}
catch (Exception e)
{
System.out.println(e.toString());
}
System.out.println("调用Web Service正常结束");
}
}
而如果利用IoC容器管理WebService,必须借助于JaxRpcPortProxyFactoryBean类,该类是个工厂bean,与所有的工厂bean一样,对该bean的请求将返回它的产品。
配置JaxRpcPortProxyFactoryBean,只需提供WebService的URL、命名空间等必需信息,将可以返回Web Service服务。在Spring配置文件中JaxRpcPortProxyFactoryBean的定义如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- 配置测试bean-->
<bean id="test" class="com.ws.Test">
<property name="sayHello">
<ref local="sayHelloService"/>
</property>
</bean>
<!-- 配置WebService bean-->
<bean id="sayHelloService" class="org.springframework.remoting.jaxrpc.JaxRpcPortProxyFactoryBean">
<!-- 配置WebService实现的接口-->
<property name="serviceInterface">
<value>com.ws.SayHello</value>
</property>
<!-- 配置WebService的wsdl的URL-->
<property name="wsdlDocumentUrl">
<value>http://localhost:8080/axis-spring/axis/SayHelloService?wsdl</value>
</property>
<!-- 配置WebService的命名空间uri-->
<property name="namespaceUri">
<value>http://localhost:8080/axis-spring/axis/SayHelloService</value>
</property>
<!-- 配置WebService的服务名-->
<property name="serviceName">
<value>SayHelloService</value>
</property>
<!-- 配置WebService的portName-->
<property name="portName">
<value>SayHelloService"</value>
</property>
</bean>
</beans>
发表评论
-
【转】在项目中使用多个数据源-多sessionFactory方案
2013-05-10 16:30 3136适用范围:适合SSH架构访问多个数据库, ... -
【转】使用spring的动态路由实现数据库负载均衡
2013-03-17 22:57 3316使用spring的动态路由实现数据库负载均衡 系统中 ... -
【转】spring 数据库读写分离
2013-03-17 22:56 2813什么是数据库的读写分离 数据库的读写分离简单的说是把对数据 ... -
[转]Spring+iBatis+JOTM实现JTA事务
2013-03-17 22:51 3069Spring+iBatis+JOTM实现JTA事务 ... -
Spring 和Axis2整合相关那些事
2012-12-29 12:58 10424Axis2优劣: 现在用axis2开发一个webse ... -
【转】JAVA并发容器代码随读
2012-12-06 15:29 2959转载自 http://rdc.taobao.c ... -
Spring3.04和Junit4
2011-11-27 18:15 4404在Spring3.x以上必须采用 ... -
Spring加载属性文件的扩展
2011-08-22 12:21 3030在项目中一个属性文件配置信息,提供给数据连接信息 ... -
Brap和Spring整合(简单权限验证)
2011-07-26 10:31 1396在使用Spring的发 ... -
Quartz的任务的临时启动和暂停和恢复
2011-07-16 10:18 40260在项目中需要手动启停某些服务,那么需要有一个控 ... -
Quartz中定时调度EJB3.0服务
2011-07-13 22:25 2941在quartz2.0中只支持EJb2.0的服务 ... -
Quartz中定时调度EJB2.0服务
2011-07-13 22:12 2187在Quartz2.0中提供支持EJB2.0 ... -
Quartz的简单使用
2011-07-13 22:05 9960最近工作需要学习quartz,那么必须首先了解三个概念:调度器 ... -
Brap 远程访问调用 和Spring整合(二)
2010-12-08 14:52 2012Brap和 Spring 整合使用如 ... -
闲着没事Hessian开发WebService的总结(二)
2010-12-07 20:30 4044在Spring和Hessian整合中,以前 ... -
Spring JMX的学习总结(三) 基于注释的JMX的使用
2010-12-03 17:26 3366具体实现JMX的注释的类: package c ... -
Spring JMX的总结学习(二) 注解实现MBean
2010-12-03 17:24 6293本文采用Spring JMX ... -
Spring JMX的总结学习(一)基于标准接口的JMX
2010-12-03 17:21 3786在Spring中采用JMX标准形式的,开发相关的Spr ... -
Spring JMS的开发应用--自定义消息转换器的使用(四)
2010-12-03 01:37 2521在Spring JMS、中可以通过实现Me ... -
Spring JBOSSMQ JMS的开发应用(三)
2010-11-30 20:11 2351如果用过JMS的话,会发现它类似写JD ...
相关推荐
Spring作为一款强大的企业级应用框架,提供了一种模块化、灵活的方式来构建应用程序,而Axis2则是Apache组织提供的一个高效且可扩展的Web服务引擎,用于处理SOAP消息。本文将深入探讨如何将Spring与Axis2整合,创建...
在IT行业中,Spring框架是Java企业级应用开发的首选,而Apache Axis2则是知名的Web服务引擎,用于处理SOAP协议和创建Web服务。本篇将详细探讨如何将Spring 3.2.5版本与Axis2 1.6.2版本进行整合,以便在Spring环境中...
Apache Axis2是著名的Web服务引擎,而Spring则是流行的Java企业级应用框架,它们的结合能够帮助开发者更方便地创建、部署和管理SOAP Web服务。 首先,理解Apache Axis2。它是一个用于构建和部署Web服务的高性能、可...
另一方面,Spring是一个广泛应用的Java企业级应用框架,它简化了开发、配置和管理Java应用的过程,包括Web服务。 **Axis2与Spring整合** 整合Axis2和Spring的主要目的是利用Spring的依赖注入(DI)和面向切面编程...
而Spring框架则是一个全面的企业级应用开发框架,尤其以其强大的依赖注入(DI)和面向切面编程(AOP)功能著称。当我们谈论"Axis2整合Spring"时,我们实际上是在讨论如何将这两个框架结合在一起,以实现更强大、更...
Spring框架则是一个全面的企业级应用开发框架,它简化了Java应用程序的开发过程,特别是通过依赖注入和面向切面编程(AOP)提供了一种灵活的架构。Spring还具有强大的集成能力,可以与其他框架如Hibernate(ORM)、...
在Java世界中,Spring框架以其强大的灵活性和可扩展性,被广泛用于构建企业级应用程序。当我们需要在Spring项目中提供Web服务时,Axis2是一个常用的工具,它是一个高效的Web服务引擎,支持SOAP 1.1和1.2,以及...
3. **Spring框架**:Spring是一个全面的企业级应用开发框架,提供依赖注入(DI)和面向切面编程(AOP)等功能。它简化了Java应用的开发,特别是在处理事务管理、数据库操作和单元测试等方面。 4. **POJO**:POJO是...
然而,Spring框架则是一个全面的企业级应用开发框架,提供了依赖注入、AOP(面向切面编程)、事务管理等多种功能。 将Axis与Spring整合的主要好处包括: 1. **依赖注入**:Spring的依赖注入允许我们在运行时动态地...
Spring框架则是一个全面的企业级应用开发框架,它在Java社区中非常流行,特别是在服务层(如Web服务)的构建上。 描述中提到的“简单例子:axis2整合spring发布webservice”,意味着我们将学习如何将这两个框架结合...
Apache Axis2是用于构建Web服务和SOA(Service-Oriented Architecture)的高性能、灵活的开源框架,而Spring是一个广泛使用的Java应用框架,尤其在企业级应用开发中,它提供了依赖注入、数据访问、事务管理等功能。...
通过这样的整合,开发人员可以充分利用Spring的便利性和Axis2的Web服务功能,构建出高效且易于维护的企业级应用。 在提供的链接(http://blog.csdn.net/linlinv3/article/details/9017767)中,你可以找到更具体的...
在IT行业中,Web服务是应用程序之间进行通信的一种标准方式,而Axis2是Apache软件基金会...但总体来说,轴2WebService与Spring的整合是一个强大而实用的技术解决方案,对于构建复杂的企业级Web服务应用具有很高的价值。
它提供了全面的解决方案来解决企业级应用开发中的常见问题,如依赖注入(DI)、面向切面编程(AOP)、事务管理等。Spring的核心特性之一就是其强大的DI容器,它可以管理应用中对象的生命周期和依赖关系,从而简化了...
Axis2可以轻松与Spring框架、MyBatis等其他Java技术集成,提供更丰富的企业级应用解决方案。 10. **故障排查与日志记录** Axis2使用log4j进行日志记录,通过调整log4j.properties配置文件,可以获取详细的调试...
- Spring是一个开源的应用程序框架,主要用于Java平台上的企业级应用程序开发。 - Spring的核心特性包括依赖注入(DI)、面向切面编程(AOP)、事务管理等。 - 通过使用Spring,可以轻松地管理应用程序中的对象和...
Spring框架则是一个全面的企业级应用开发框架,提供了丰富的功能,包括依赖注入、AOP(面向切面编程)以及对Web服务的支持。本文将详细介绍如何结合Axis1和Spring来配置一个Web服务服务器。 首先,我们需要理解这两...
Spring框架,作为Java企业级应用开发的首选,提供了一种模块化、轻量级的方式,用于构建可维护的、高质量的应用程序。Spring提供了对Web Service的支持,可以通过Spring-WS、Apache CXF等库实现。 接下来,我们将...
Spring 集成 AXIS2 的 Web service 配置方法 Spring 是一个流行的 Java 应用程序...总结来说,Spring 集成 AXIS2 的 Web 服务配置方法可以提高开发效率和系统可维护性,该配置方法可以应用于企业级应用程序的开发中。
总之,这个压缩包提供了一个宝贵的实践平台,让我们能亲手操作并理解如何在Axis2上整合EJB,实现企业级的Web服务解决方案。通过这个实例,开发者可以更好地掌握Java EE中的分布式计算和Web服务技术。