首页> 中国专利> 一种基于SSH框架集成Axis开发并发布Web Service的方法

一种基于SSH框架集成Axis开发并发布Web Service的方法

摘要

本发明涉及Java?Web中的Web?Service技术开发领域,具体的说是在一种SSH框架基础上集成Axis开发并且发布Web?Service服务的方法。该方法包括以下步骤:1、搭建SSH框架基础开发平台。2、整合并且在SSH框架基础上配置Axis。3、编写Web?Service实现类。4、编写WSDD文件。5、发布Web?Service。本方法将组装SOAP消息的工作托管给AXIS来处理,相较于手工实现SOAP协议,实现更快捷,如果有新的接口业务要实现时,只需将所要发布的Web?Service方法配置到WSDD文件中即可,不需额外手工编写WSDL文件。

著录项

  • 公开/公告号CN105068820A

    专利类型发明专利

  • 公开/公告日2015-11-18

    原文格式PDF

  • 申请/专利权人 浙江中烟工业有限责任公司;

    申请/专利号CN201510579065.0

  • 发明设计人 虞文进;王柳婧;黎勇;

    申请日2015-09-11

  • 分类号G06F9/44(20060101);

  • 代理机构33214 杭州丰禾专利事务所有限公司;

  • 代理人王从友

  • 地址 310008 浙江省杭州市建国南路288号

  • 入库时间 2023-12-18 12:16:22

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-09-28

    授权

    授权

  • 2015-12-16

    实质审查的生效 IPC(主分类):G06F9/44 申请日:20150911

    实质审查的生效

  • 2015-11-18

    公开

    公开

说明书

技术领域

本发明涉及JavaWeb中的WebService技术开发领域,具体的说是在SSH框架基础上集成Axis开发并且发布WebService服务的方法。

背景技术

WebService技术的出现,使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件,就可相互交换数据或集成。依据WebService规范实施的应用之间,无论它们所使用的语言、平台或内部协议是什么,都可以相互交换数据。WebService为整个企业甚至多个组织之间的业务流程的集成提供了一个通用机制。

WebService主要涉及的技术有1、XML(标准通用标记语言下的一个子集);2、SOAP(SimpleObjectAccessProtocol,简单对象访问协议);3、WSDL(WebServicesDescriptionLanguage,WebService描述语言)。

WebService可以看成是远程函数。WSDL可以理解成函数的声明,它详细的定义了函数的原型,包括函数名、入口参数、出口参数、以及与远程地址的绑定。SOAP是WebService的访问协议,SOAP建立在XML之上,不同的就是对XML原本没有限制的格式加上了一些限制,需要有envelop,在envelope中,还要分header和body。如果利用SOAP开发WebService的程序,那就需要根据WSDL的定义来自行组装SOAP包。除了要配置SOAP请求头文件信息,还要根据SOAP定义的消息格式组装消息数据。这种手工组装SOAP消息的方式,工作量较大,而且日后的系统维护、升级、部署都有较高的复杂度。

WebService的接口业务实现层,进行具体的业务实现处理,在WebService接口中调用各种业务需求的实现方法。由于业务的复杂性,WebService接口中对业务实现方法不可避免的会存在多重依赖性,对象之间的耦合度越高,业务变更时的维护成本就越高,因此对象的设计应使类和构件之间的耦合最小。

SSH为Struts+Spring+Hibernate的一个集成框架,是目前较流行的一种Web应用程序开源框架。使用该框架,将对象之间的依赖关系交给Spring,降低组件之间的耦合性,开发者可以更专注于应用逻辑;降低了业务对象替换时所带来的复杂性和维护成本。

Axis全称ApacheExtensibleInteractionSystem,即阿帕奇可扩展交互系统。Axis本质上就是一个SOAP引擎,提供创建服务器端、客户端和网关SOAP操作的基本框架。

发明内容

本发明提供了一种基于SSH框架集成Axis开发并发布WebService的方法,所述方法通过将组装SOAP消息的工作托管给AXIS来处理,通过SSH框架降低WebService业务逻辑层的耦合度,能够在应用生产过程中快速的架设WebService服务,降低系统复杂度,从而简化维护和部署。

为了实现上述的目的,本发明采用了以下的技术方案:

一种基于SSH框架集成Axis开发并发布WebService的方法,该方法包括以下的步骤:

步骤1,搭建SSH框架基础开发平台,导入SSH框架所依赖的Jar包到工程中,修改web-info下的web.xml文件,增加struts2的配置;并在WEB-INF/classes目录下添加struts.xml配置文件;

步骤2,整合并且在SSH框架基础上配置Axis,修改web.xml增加Axis的配置描述,并在web.xml文件下加入AxisServlet配置后,系统就会对以后缀为*.jws及路径为/services/*的请求进行监听,遇到此类请求时将把信息交由org.apache.axis.transport.http.AdminServlet类进行处理;Axis和struts2在整合过程中,在struts.xml增加<constantname="struts.action.excludePattern"value="/servlet/AxisServlet,/services/.*"/>配置,将WebService的访问路径从struts2中拦截器中排除;

步骤3,编写WebService实现类,采用基于spring的WebService实现,WebService服务类需要继承spring提供的org.springframework.remoting.jaxrpc.ServletEndpointSupport类,Spring使用该类来暴露WebService;

步骤4,编写WebServiceDeploymentDescriptor文件;

步骤5,发布WebService服务,在浏览器访问在web.xml里配置好的Axis处理地址AxisServlet,打开已配置并且发布好的WebService,单击发布成功的接口名称打开其对应的WSDL文件,将WSDL文件保存后,根据该文件信息进行客户端的WebService调用。

本方法将组装SOAP消息的工作托管给AXIS来处理,相较于手工实现SOAP协议,实现更快捷,如果有新的接口业务要实现时,只需将所要发布的WebService方法配置到WSDD文件中即可,不需额外手工编写WSDL文件。

本方法实现了资源的可配置和易管理,降低了使用资源双方的依赖程度。通过Spring提供的IOC将WebService接口与具体业务实现进行分离,将对象之间的依赖关系交给Spring,降低WebService接口与接口业务实现层之间的耦合性。在接口业务需求变更时只需要将新的业务实现通过Spring注入到接口中即可,降低了业务对象变更或替换时所带来的复杂性和维护成本。

附图说明

图1为本发明方法的流图。

图2为发布成功的接口的示意图。

具体实施方式

如图1所示的一种基于SSH框架集成Axis开发并发布WebService的方法,本方法共包含5个步骤。

步骤1,搭建SSH框架基础开发平台,具体实施方式如下:

导入SSH框架所依赖的Jar包到工程中,修改web-info下的web.xml文件,增加struts2的配置:

<filter>

<filter-name>struts2</filter-name>

<filter-class>

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

</filter-class>

</filter>

<filter-mapping>

<filter-name>struts2</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

StrutsPrepareAndExecuteFilter过滤器的主要功能是对request请求转发到对应的action去处理,是struts2的核心过滤器。

在WEB-INF/classes目录下添加struts.xml配置文件:

<struts>

<constantname="struts.convention.action.suffix"value="Controller"/>

<constantname="struts.convention.default.parent.package"value="nbol"/>

<!--搜索此配置下的所有包中的类-->

<constantname="struts.convention.package.locators.basePackage"value="net.nbol"/>

<!--action存放的根包,如果不配,默认为struts、struts2、action、actions-->

<constantname="struts.convention.package.locators"value="controller"/>

<!--返回页面的根路径-->

<constantname="struts.convention.result.path"value="/WEB-INF/"/>

</struts>

配置Spring,修改web-info下的web.xml文件增加对spring的配置:

<listener>

<listener-class>

org.springframework.web.context.ContextLoaderListener

</listener-class>

</listener>

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath*:spring/*.xml</param-value>

</context-param>

ContextLoaderListener监听器的作用就是启动Web容器时,自动装配ApplicationContext的配置信息。

在WEB-INF/classes目录下添加spring配置文件applicationContext.xml:

<aop:aspectj-autoproxy/>

<context:annotation-config/>

<context:component-scanbase-package="net.nbol"/>

<tx:annotation-driven/>

配置hibernate,由于hibernate在SSH框架中负责数据持久化,在WebService开发中并不是必须的,所以这里不具体描述如何配置hibernate。

步骤2,整合并且在SSH框架基础上配置Axis:

修改web.xml增加Axis的配置描述:

<display-name>Apache-Axis</display-name>

<listener>

<listener-class>org.apache.axis.transport.http.AxisHTTPSessionListener</listener-class>

</listener>

<!--服务管理-->

<servlet>

<servlet-name>AdminServlet</servlet-name>

<servlet-class>

org.apache.axis.transport.http.AdminServlet

</servlet-class>

<load-on-startup>100</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>AxisServlet</servlet-name>

<url-pattern>/servlet/AxisServlet</url-pattern>

</servlet-mapping>

<!--对../services/.wsdd请求和.../jws都交由webService来处理-->

<servlet-mapping>

<servlet-name>AxisServlet</servlet-name>

<url-pattern>*.jws</url-pattern>

</servlet-mapping>

<servlet-mapping>

<servlet-name>AxisServlet</servlet-name>

<url-pattern>/services/*</url-pattern>

</servlet-mapping>

在web.xml文件下加入AxisServlet配置后,系统就会对以后缀为*.jws及路径为/services/*的请求进行监听,遇到此类请求时将把信息交由org.apache.axis.transport.http.AdminServlet类进行处理。

Axis和struts2在整合过程中,struts会把Axis的地址也拦截了,默认当成一个action处理,会因为找不到action而报错,所以需要在struts.xml增加<constantname="struts.action.excludePattern"value="/servlet/AxisServlet,/services/.*"/>配置,将WebService的访问路径从struts2中拦截器中排除。

步骤3,编写WebService实现类,本方法发明了基于spring的WebService实现,所以WebService服务类需要继承spring提供的org.springframework.remoting.jaxrpc.ServletEndpointSupport类,Spring使用该类来暴露WebService,如下所示:

publicclassCertificateServiceextendsServletEndpointSupport{

privateLoggerlog=Logger.getLogger(this.getClass());

privateITCertificateDaoitCertificateDao;

privateITSAPPaymentServiceitsaPaymentService;

//该方法由Spring调用,将目标业务bean注入。

protectedvoidonInit(){

this.itCertificateDao=(ITCertificateDao)getWebApplicationContext().getBean("TCertificateDaoImpl");

this.itsaPaymentService=(ITSAPPaymentService)getWebApplicationContext().getBean("TSAPPaymentService");

}

publicvoidgetCertificateInfo(CertificateBeancertificate){

//webService具体业务实现

}

}

WebService在每次请求时都会产生一个新实例,每次都会调用oninit方法,用来注入需要调用的业务接口。

步骤4,编写WSDD(WebServiceDeploymentDescriptor)文件,本方法采用WebService中的定制发布,与即时发布相比,定制发布更加繁琐也更加复杂,但是换来的却是更大的灵活性。定制发布需要编写一个WSDD文件,其实就是一个XML描述文件。

现在我们将该服务植入Axis中,创建server-config.wsdd文件:

<deploymentxmlns="http://xml.apache.org/axis/wsdd/"

xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">

<handlername="URLMapper"type="java:org.apache.axis.handlers.http.URLMapper"/>

<servicename="Certificate"provider="java:RPC"style="document"use="literal">

<operationname="getCertificateInfo"

soapAction=http://localhost:8080/project/services/Certificatexmlns:ns1="urn:functions">

<parametername="CertificateBean"/>

</operation>

<parametername="allowedMethods"value="*"/>

<parametername="className"value="net.nbol.webservice.CertificateService"/>

<beanMappinglanguageSpecificType="java:net.nbol.webservice.CertificateBean"qname="ns2:CertificateBean"xmlns:ns2="urn:BeanService"/>

<beanMappinglanguageSpecificType="java:net.nbol.webservice.CertificateRow"qname="ns2:CertificateRow"xmlns:ns2="urn:BeanService"/>

</deployment>

步骤5,发布WebService服务,在浏览器访问在web.xml里配置好的Axis处理地址AxisServlet,即地址为http://localhost:8080/project/servlet/AxisServlet,就可以打开已配置并且发布好的WebService,单击图2中所示的发布成功的接口名称可以打开其对应的WSDL文件,将WSDL文件保存后,可以根据该文件信息进行客户端的WebService调用。

这样基于SSH框架集成Axis的WebService开发就完成了,如果有新的WebService接口加入,图1中的前面两个步骤无需执行,只需从第三步开始,重新编写继承ServletEndpointSupport类的子类,并且实现处理业务,在server-config.wsdd文件中加入对新接口的配置描述即可。

本方法将组装SOAP消息的工作托管给AXIS来处理,相较于手工实现SOAP协议,实现更快捷,如果有新的接口业务要实现时,只需将所要发布的WebService方法配置到WSDD文件中即可,不需额外手工编写WSDL文件。

本方法实现了资源的可配置和易管理,降低了使用资源双方的依赖程度。通过Spring提供的IOC将WebService接口与具体业务实现进行分离,将对象之间的依赖关系交给Spring,降低WebService接口与接口业务实现层之间的耦合性。在接口业务需求变更时只需要将新的业务实现通过Spring注入到接口中即可,降低了业务对象变更或替换时所带来的复杂性和维护成本。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号