CN105068820A - 一种基于SSH框架集成Axis开发并发布Web Service的方法 - Google Patents
一种基于SSH框架集成Axis开发并发布Web Service的方法 Download PDFInfo
- Publication number
- CN105068820A CN105068820A CN201510579065.0A CN201510579065A CN105068820A CN 105068820 A CN105068820 A CN 105068820A CN 201510579065 A CN201510579065 A CN 201510579065A CN 105068820 A CN105068820 A CN 105068820A
- Authority
- CN
- China
- Prior art keywords
- webservice
- axis
- web
- xml
- ssh
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Information Transfer Between Computers (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及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文件。
Description
技术领域
本发明涉及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注入到接口中即可,降低了业务对象变更或替换时所带来的复杂性和维护成本。
Claims (1)
1.一种基于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调用。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510579065.0A CN105068820B (zh) | 2015-09-11 | 2015-09-11 | 一种基于SSH框架集成Axis开发并发布Web Service的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510579065.0A CN105068820B (zh) | 2015-09-11 | 2015-09-11 | 一种基于SSH框架集成Axis开发并发布Web Service的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105068820A true CN105068820A (zh) | 2015-11-18 |
CN105068820B CN105068820B (zh) | 2018-09-28 |
Family
ID=54498200
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510579065.0A Active CN105068820B (zh) | 2015-09-11 | 2015-09-11 | 一种基于SSH框架集成Axis开发并发布Web Service的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105068820B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106569821A (zh) * | 2016-11-04 | 2017-04-19 | 青岛海信网络科技股份有限公司 | 一种生成Webservice类的方法及装置 |
CN108427550A (zh) * | 2018-02-13 | 2018-08-21 | 深圳太极云软技术股份有限公司 | 一种Web服务生成方法、装置及设备 |
CN112329018A (zh) * | 2020-10-31 | 2021-02-05 | 方正株式(武汉)科技开发有限公司 | 一种struts替换方法 |
CN113783936A (zh) * | 2021-08-16 | 2021-12-10 | 科大国创云网科技有限公司 | 一种基于企业服务总线的webservice协议统一接口实现方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101621534A (zh) * | 2009-08-11 | 2010-01-06 | 周相兵 | 一种面向服务体系结构的语义服务自动组合方法 |
CN103092589A (zh) * | 2011-11-03 | 2013-05-08 | 浙江省公众信息产业有限公司 | 一种基于ssh框架的代码自动生成方法 |
CN103473034A (zh) * | 2012-06-06 | 2013-12-25 | 阿里巴巴集团控股有限公司 | 一种动态发布Web 服务的方法和装置 |
US8839194B2 (en) * | 2008-11-20 | 2014-09-16 | Nhn Corporation | Component-based web application development framework used for creating web page |
-
2015
- 2015-09-11 CN CN201510579065.0A patent/CN105068820B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8839194B2 (en) * | 2008-11-20 | 2014-09-16 | Nhn Corporation | Component-based web application development framework used for creating web page |
CN101621534A (zh) * | 2009-08-11 | 2010-01-06 | 周相兵 | 一种面向服务体系结构的语义服务自动组合方法 |
CN103092589A (zh) * | 2011-11-03 | 2013-05-08 | 浙江省公众信息产业有限公司 | 一种基于ssh框架的代码自动生成方法 |
CN103473034A (zh) * | 2012-06-06 | 2013-12-25 | 阿里巴巴集团控股有限公司 | 一种动态发布Web 服务的方法和装置 |
Non-Patent Citations (3)
Title |
---|
匿名: "Java创建Webservice步骤之JavachAxis开发WebService程序", 《HTTP://WWW.VOIDCN.COM/ARTICLE/P-SOGFXNWA-OH.HTML》 * |
匿名: "ssh搭建项目步骤", 《HTTP://WWW.VOIDCN.COM/ARTICLE/P-SPDUJTOS-MG.HTML》 * |
匿名: "通过Axis整合SSH项目创建WebService的流程步骤", 《HTTP://WWW.VOIDCN.COM/ARTICLE/P-OUXNZEUM-NM.HTML》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106569821A (zh) * | 2016-11-04 | 2017-04-19 | 青岛海信网络科技股份有限公司 | 一种生成Webservice类的方法及装置 |
CN108427550A (zh) * | 2018-02-13 | 2018-08-21 | 深圳太极云软技术股份有限公司 | 一种Web服务生成方法、装置及设备 |
CN108427550B (zh) * | 2018-02-13 | 2021-09-03 | 深圳太极云软技术有限公司 | 一种Web服务生成方法、装置及设备 |
CN112329018A (zh) * | 2020-10-31 | 2021-02-05 | 方正株式(武汉)科技开发有限公司 | 一种struts替换方法 |
CN113783936A (zh) * | 2021-08-16 | 2021-12-10 | 科大国创云网科技有限公司 | 一种基于企业服务总线的webservice协议统一接口实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105068820B (zh) | 2018-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2656571B1 (en) | Delivery and execution of logic in user terminal in ims session | |
US10462018B2 (en) | Managing a number of secondary clouds by a master cloud service manager | |
US8160572B2 (en) | Platform test environment and unit test framework for a telecommunications gateway | |
CN105068820A (zh) | 一种基于SSH框架集成Axis开发并发布Web Service的方法 | |
EP2556418B1 (en) | Communication console with component aggregation | |
WO2007104501A1 (en) | TR69 BASED SERVICE INTERFACE FOR OSGi BUNDLES | |
CN105959302B (zh) | 一种终端管理系统及方法 | |
CN103530097B (zh) | 一种跨中间件平台的组件的实现方法和装置 | |
US9003433B2 (en) | Off-premise and codeless process-centric business mashup to integrate BPEL based processes and web 2.0 widgets | |
CN107222524B (zh) | 一种开放式应用服务集成框架 | |
US20170223147A1 (en) | Communication method and system based on assembled communication protocol stack | |
CN101146119A (zh) | 一种跨浏览器自适应调用本地功能的装置和方法 | |
CN101997721B (zh) | 一种电信网络管理系统、方法及相应的装置 | |
CN103164207A (zh) | 基于安卓系统的跨硬件平台的应用程序开发方法和系统 | |
US20060259577A1 (en) | System and method for customizing services for applications | |
CN104363212B (zh) | 一种基于Lua的socket通信语义解析方法和应用系统 | |
CN112966833B (zh) | 基于Kubernetes集群的机器学习模型平台 | |
CN104410702A (zh) | 远程服务请求方法、响应方法、请求装置与响应装置 | |
CA2544007A1 (en) | Method and system for remote server administration | |
Sefid‐Dashti et al. | A reference architecture for mobile SOA | |
CN105260179A (zh) | 一种实现flex与servlet交互的方法 | |
Yelmo et al. | User-driven service lifecycle management–adopting internet paradigms in telecom services | |
CN102137079B (zh) | 一种远程过程调用的业务开发方法及装置 | |
CN102075646B (zh) | 呼叫中心设备控制系统及方法 | |
EP3121998A1 (en) | Generic multichannel center for network applications and services |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |