设为首页 收藏本站
查看: 289|回复: 0

[经验分享] SSH整合cxf 发布web Service

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-3-26 08:43:04 | 显示全部楼层 |阅读模式
S2S4H3整合cxf
准备:我是已经有了一个S2S4H3的整合项目,由于需要,整合了cxf,估计看见这篇文档的人都是知道cxf框架是干什么的吧,
为了发布WebService,要做一些前期准备,当然S2S4H3的项目肯定要有了,在这里我就不解释SSH的整合啦,关注我的下篇文档吧。
①     准备cxf的jar包:
我用的是cxf 2.5.9,在官网可以下载到的,此整合教程是使用与3.0前的版本,因为cxf 3.0之后的配置是不一样的。
cxf-2.5.9.jar
cxf-2.5.9.jar
geronimo-servlet_2.5_spec-1.1.2.jar
neethi-3.0.2.jar
stax2-api-3.1.1.jar
woodstox-core-asl-4.1.4.jar
xmlschema-core-2.0.3.jar
②     在web.xml中新添如下配置:
还有一问题需要注意:因为struts2 的默认过滤器默认是过滤捕捉所以请求的,所以需要自定义Filter为cxf放行
<servlet>
<servlet-name>cxf</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>30</load-on-startup>
</servlet>
<!-- 需要注意:cxfServlet与struts2的URL不能都写/*,需要区分,在自定义Filter中对cxf放行,不然请求时会在struts2里出错-->
<servlet-mapping>
<servlet-name>sshserver </servlet-name>         
<url-pattern>/sshserver/*</url-pattern>
</servlet-mapping>
<!-- 配置struts2的filter:自定义的Filter(为了给cxf放行)-->
<filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.hxb.struts2.Filter.LetCxfGoFilter</filter-class>
</filter>
③     在spring的配置文件ApplicationContext.xml中添加新的配置如下:
其中红色字体为cxf新添的配置。
<?xml version="1.0"encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:p="http://www.springframework.org/schema/p"xmlns:jaxws="http://cxf.apache.org/jaxws"
xsi:schemaLocation="http://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-4.0.xsd
<!-- 导入cxf资源文件 -->
<importresource="classpath:META-INF/cxf/cxf.xml" />
<importresource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
<importresource="classpath:META-INF/cxf/cxf-servlet.xml" />
<!--发布服务-->
<jaxws:endpointid="orderProcess" implementor="org.hxb.WebService.ServerImpl"
     address="/ServerPublish"/>

④     自定义的Filter:
前面已经提过自定义Filter的目的是为了给cxf放行:
package org.hxb.struts2.Filter;
import java.io.IOException;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
importorg.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter;
/**
* <p>自定义Filter 为cxf放行</p>
*
*/
public class LetCxfGoFilter extends StrutsPrepareAndExecuteFilter {
@Override
public void doFilter(ServletRequest arg0, ServletResponsearg1,FilterChain arg2) throws IOException, ServletException {     
HttpServletRequestrequest = (HttpServletRequest) arg0;
//如果路径包含cxf则放行。
if(request.getRequestURI().contains("sshserver")){   
arg2.doFilter(arg0, arg1);   
}else{
super.doFilter(arg0,arg1, arg2);
}
}
}
⑤     Web Service的接口:
package org.hxb.WebService;
import javax.jws.WebMethod;
import javax.jws.WebService;
@WebService
publicinterface Server {   
@WebMethod
public  String getGasData();
}

⑥     Web Service的实现:
package org.hxb.WebService;
import javax.jws.WebService;
@WebService
publicclass ServerImpl implements Server {
@Override
public String getGasData() {
    System.out.println("INFO:Server已经启动!");
return"Service";
}
}
⑦     启动后:浏览器访问:http://localhost:8080/sshtest/ /ServerPublish?wsdl




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-50591-1-1.html 上篇帖子: linux 下利用bind实现DNS的正反向解析 下篇帖子: fedora 16
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表