最近工作用到spring+axis,现在抽空整理一下,由于实际工作中仍有细节没有弄清楚,在此只总结一下一般流程,分享给大家,希望对你有帮助,如果能解答我的疑惑还望指教。在网上查了很多资料,大多数是使用Myeclipse,出于个人喜好,我使用的IDE是Eclipse+tomcat6.0。
步骤1:在Eclipse中建立一个web项目,这里起名叫AxisTest,需要的jar包有:
commons-discovery.jar、jaxrpc.jar、saaj.jar、wsdl4j.jar、axis.jar、commons-logging.jar、spring.jar,由于网上大多数例子都是用MyEclipse自动导入jar,所以有的文章中介绍还需要activation.jar、ant.jar,但是在项目把这两个jar包去掉,照样跑通,所以此处不明白这个两个jar有何用,有谁知道请留言给我,谢谢。
步骤2:导入jar包后,分别写如下代码:
声明接口
package com.webservice.axis.test;
/**
* 声明方法接口
*/
public interface IHelloWorld {
public String getMessage(String word);
}
实现类
package com.webservice.axis.test;
/**
* 实现接口的类,Ioc的依赖注入可以在此处自由发挥
*/
public class HelloWorldImpl implements IHelloWorld {
private String helloStr; // Spring 中需要注入的字符串
public String getHelloStr() {
return helloStr;
}
public void setHelloStr(String helloStr) {
this.helloStr = helloStr;
}
// 实现接口中的方法
@Override
public String getMessage(String name) {
return helloStr + ":" + name;
}
}
下面一个类,感觉上像是spring和axis的结合点,用来将类发布成webService,但有些地方值得说一下。
package com.webservice.axis.test;
import javax.xml.rpc.ServiceException;
import org.springframework.remoting.jaxrpc.ServletEndpointSupport;
/**
* ServletEndpointSupport 是spring提供支持WS的类,这里只需要继承,但是这个类是依赖jaxrpc.jar包,
* 而从Apache下载的axis1.4中并没有找到jaxrpc.jar包,网上查了很多资料,貌似jaxrpc.jar现在被
* jaxws-1.4.1.jar代替,曾试过将jaxws导入项目,倒是ServletEndpointSupport 仍然不支持,难
* 道spring没有对jaxws的支持?
*/
public class HelloWorldWebService extends ServletEndpointSupport implements IHelloWorld {
private HelloWorldImpl helloWorld;
protected void onInit()throws ServiceException {
// 在 Spring 容器中获取 Bean 的实例
helloWorld = (HelloWorldImpl) getApplicationContext()
.getBean("myHelloWorldBean");
}
@Override
public String getMessage(String name) {
// 执行 Bean 中的相同的方法
return helloWorld.getMessage(name);
}
}
步骤3:配置web.xml,这个没什么好说的
<!--Spring 框架需要引入的配置文件及相关类 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:applicationContext.xml</param-value>
</context-param>
<servlet>
<servlet-name>context</servlet-name>
<servlet-class>
org.springframework.web.context.ContextLoaderServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!--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>
<!--axis 的 Web Service 的 Web 发布路径 -->
<servlet-mapping>
<servlet-name>axis</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
步骤4:配置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="com.webservice.axis.test.HelloWorldWebService" />
<parameter name="allowedMethods" value="*" />
<parameter name="scope" value="request" />
</service>
<transport name="http">
<requestFlow>
<handler type="URLMapper" />
</requestFlow>
</transport>
</deployment>
步骤5:配置applicationContext
<beans xmlns ="http://www.springframework.org/schema/beans"
xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop ="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation ="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<bean id="myHelloWorldBean" class="com.webservice.axis.test.HelloWorldImpl">
<property name="helloStr" value="Say Hello to :" />
</bean>
</beans>
项目目录为:
这样服务就发布了,你可以访问http://localhost:8080/AxisTest/services/myWebService或者访问http://localhost:8080/AxisTest/services/myWebService?wsdl来查看生成的myWebService.wsdl文件
有几点想和大家讨论一下:
第一:
在HelloWorldWebService 中helloWorld是通过下面一句,实现注入的,个人感觉不是很优雅
helloWorld = (HelloWorldImpl) getApplicationContext().getBean("myHelloWorldBean");
于网上查了不少资料,有一种说法是在server-config.wsdd中将配置改成
<!-- 自定义服务 -->
<service name="myWebService" provider="java:SPRING">
<parameter name="className" value="Spring中Bean的名字" />
<parameter name="allowedMethods" value="*" />
<parameter name="scope" value="request" />
</service>
但是这样做会出异常,查了一些资料得知provider的服务类型有4种:RPC、Document、Wrapped和Message,是org.apache.axis.providers包中的API提供的支持,不清楚上面java:SPRING是怎么出来的,或许是我哪里配错了?
第二、当访问http://localhost:8080/AxisTest/services/myWebService.wsdl时,会出现警告
警告: The class com.webservice.axis.test.IHelloWorld does not contain a default constructor, which is a requirement for a bean class. The class cannot be converted into an xml schema type. An xml schema anyType will be used to define this class in the wsdl file.
目前解决方法是将HelloWorldWebService中的helloWorld私有变量声明称HelloWorldImpl类型,为什么有这种情况不得而知,如果哪位牛人经过指点迷津。
第三、就是用JDK6自带的一个WSImport工具根据wsdl生成客户端代码,具体的操作如下:
1、首先要交代WSImport.exe的位置,他在JDK安装目录的bin文件下,cmd可以直接使用%JAVA_HOME%"\bin\WSImport调用
2、打开cmd命令行,输入指令wsimport -s filePath http://localhost:8080/AxisTest/services/myWebService.wsdl
说明: wsimport -s 生成代码保存路径 wsdl文件路径 详情参见http://www.blogjava.net/downmoon/archive/2010/08/29/330136.html
上面的做法是正确无误的,但是我试过会出异常[ERROR] rpc/encoded wsdls are not supported in JAXWS 2.0,上网查过,但没查出所以然。。。 求真相!!!
- 大小: 39.2 KB
分享到:
相关推荐
在实际项目中,"Spring3 + Axis2"的整合可能涉及到源码级别的工作,包括编写服务接口和服务实现,配置Spring容器,以及处理Axis2的部署描述符。同时,开发过程中会用到一系列工具,如IDE(如Eclipse、IntelliJ IDEA...
总结,Spring整合Axis2能够充分利用两者的优势,构建高性能、易于维护的Web服务。无论是服务提供者还是消费者,Spring的灵活性和Axis2的效率都能在Web服务开发中发挥重要作用。通过了解和实践这些知识点,开发者可以...
总结来说,Axis2+Spring的组合提供了一种强大的方式来构建和管理Java环境下的Web服务。Spring的DI和AOP特性使得服务的配置和扩展更为简单,而Axis2则专注于高效地处理SOAP消息。这种组合不仅降低了复杂性,也提高了...
总结,AXIS是一个强大且灵活的Web服务工具,结合Spring框架可以进一步提升Web服务的开发效率和管理能力。理解AXIS的工作原理和最佳实践,对于构建高效、可靠的分布式系统具有重要意义。通过实际操作和学习"spring+...
总结来说,这篇文章详细阐述了在MyEclipse环境中使用Axis2和Tomcat搭建Web服务的步骤,适合初学者了解和实践Web服务的部署和开发。整个过程涵盖了从环境配置到服务发布的一系列操作,对于理解Web服务的生命周期管理...
6. **集成Spring框架**:Axis2可以与Spring框架无缝集成,使得服务的依赖注入和管理更加简便,同时也方便了服务的部署和测试。 7. **JSON支持**:除了XML(通过SOAP)之外,Axis2还支持JSON数据格式,JSON通常用于...
【标题】:Web服务接口(WebService)学习二之(1)——Axis2服务器端开发总结 在本文中,我们将深入探讨使用Apache Axis2框架进行Web服务(WebService)服务器端开发的相关知识点。Apache Axis2是Java平台上一个高效...
为了能够顺利地进行Axis2 WebService的开发工作,首先需要完成必要的软件环境搭建。 - **下载Axis2相关jar包**:访问[Axis官方网站](http://axis.apache.org/axis2/java/core/download.cgi),获取最新版本的依赖包...
总结,通过以上步骤,你可以成功地在SSH框架的基础上构建一个支持事务的Axis2 WebService,同时享受到SSH的灵活性和Axis2的强大功能。记得在实际项目中根据需求调整配置,确保系统的稳定性和安全性。
了解Axis2的源码可以帮助开发者更好地理解其工作原理和优化服务。主要关注的组件包括: - `MessageReceiver`:处理来自客户端的消息。 - `Module`:提供服务增强功能,如安全、事务等。 - `TransportSender` 和 `...
总结,Apache Axis1.4虽已过时,但在某些特定场景下,它的稳定性和灵活性依然具有很高的价值。理解并掌握如何使用Apache Axis1.4,对于开发者来说,仍然是提升技能树的重要一环。通过实践,你可以更好地理解Web服务...
### Axis2 WebService 开发指南知识点详述 #### 背景与介绍 Axis2作为Apache组织下的一个开源项目,提供了强大的Web Service框架,支持SOAP和REST等多种协议,旨在简化Web服务的创建、部署和调用。相比于其前身...
总结,Apache Axis2为Web服务开发提供了全面的工具集和灵活的架构,无论是在简单还是复杂的场景下,都能有效地支持Web服务的开发、部署和管理。通过深入学习和实践,开发者可以充分利用Axis2的强大功能,构建高效、...
在开发过程中,理解AXIS的工作原理,熟悉其API,以及如何使用WSDL来定义和调用Web服务是非常重要的。AXIS也提供了命令行工具,如wsdl2java,用于从WSDL生成Java客户端代码,以及java2wsdl,用于从Java类生成WSDL文件...
总结来说,"axis1 webservice案例"提供了一个学习和实践Web服务开发的实例,涵盖了服务端的部署和服务接口的创建,以及客户端的调用过程。理解并掌握这个案例,对于深入理解Web服务工作原理,以及在实际项目中使用...
总结起来,"Axis的Eclipse插件"是一个强大的工具,它为Java开发者提供了一站式的Web服务开发解决方案,从代码生成到部署,再到测试和调试,都可在Eclipse这个熟悉的环境中完成,极大地提升了开发效率和代码质量。
Axis 可以很好地与其他 Java EE 技术集成,例如,它可以与 JBoss、Tomcat 等应用服务器配合使用,也可以与 Spring 框架结合,实现服务的依赖注入和事务管理。 五、总结 通过对 Axis 1.3 的源码研究,我们可以深入...
总结来说,这个项目是一个综合性的Java Web应用,利用Spring MVC处理Web请求,MyBatis处理数据库操作,Axis2提供Web服务,而Task框架则负责后台的任务调度。整个项目通过Maven进行统一管理和构建,体现了现代Java...
总结起来,创建Axis1 Web服务服务端涉及到的主要知识点包括Web服务的基础理论、Axis1框架的使用、Java类与Web服务的关联、Stub类的生成、服务的配置与部署,以及服务的测试和调用。理解并掌握这些步骤,开发者可以...
AXIS是Apache软件基金会开发的一个开源工具,它主要用于创建、部署和使用Web服务。基于Java的AXIS使得开发者...参考文献中可能包含更多关于AXIS使用的实例和详细教程,对于理解AXIS的工作原理和实践应用会大有裨益。