前言:
CXF 结合spring 开发挺坑爹的,弄个webService麻烦死哥哥我了。首先是开发时,网上的资料与例子抄来抄去,麻烦不说还调不通。其次IP不适用具体IP使用localhost或者127.0.0.1还访问不了。最后,开发完程序部署到was上还出现不兼容的问题。
解决方案:
一、例子、经过两天的百度查找资料,最终还是自己根据API自己来写了一个,还是蛮简单的哦共大家分享:http://see-you-again.iteye.com/admin/blogs/2296181
二、解决IP对外开放的问题
1.spring 配置重新扫描
public class EscapePropertyPlaceholderConfigurer extends PropertyPlaceholderConfigurer { private static Logger logger = LoggerFactory.getLogger(EscapePropertyPlaceholderConfigurer.class) ; private Set<String> encryptedPropertyNames; protected String convertProperty(String propertyName, String propertyValue) { if (encryptedPropertyNames.contains(propertyName)) { try { logger.info("属性名:"+propertyName+" 原propertyValue:"+propertyValue) ; System.out.println(propertyValue); if(propertyName.equals("sign.ws.ip")){ propertyValue = InetAddress.getLocalHost().getHostAddress() ;//IP替换成本地IP }else{ propertyValue = Crypt.decode(propertyValue) ;//密码解密 } logger.info("属性名:"+propertyName+" 转换后propertyValue:"+propertyValue) ; } catch (Exception e) { throw new RuntimeException("属性名:"+propertyName+"转换失败"+e.getMessage()); } } return super.convertProperty(propertyName, propertyValue); } public void setEncryptedPropertyNames(Set<String> encryptedPropertyNames) { this.encryptedPropertyNames = encryptedPropertyNames; } }
二.spring 加载配置
<!-- 加载sit环境配置文件 --> <beans profile="sit"> <bean class="com.op.sign.util.EscapePropertyPlaceholderConfigurer"> <!-- 加载配置文件列表 --> <property name="locations"> <list> <value>classpath:/application-sit.properties</value> </list> </property> <!-- 过滤需要解密的参数 --> <property name="encryptedPropertyNames"> <set> <value>sign.ws.ip</value> </set> </property> <property name="fileEncoding" value="UTF-8" /> <property name="ignoreUnresolvablePlaceholders" value="true" /> </bean> </beans>
三、解决cxf 与was冲突的问题
1.首先冲突的jar包是neethi.jar、xmlschema-core.jar两个jar包。
2.在was里面创建共享库,将响应版本的jar包放在里面,然后在集群和应用程序中引用共享库。
附录一:创建共享库步骤(样例)
<!--[if !supportLists]-->1. <!--[endif]-->拷贝以下jar包至${WAS_INSTALL_ROOT}/optionalLibraries/目录下
hibernate-jpa-2.1-api-1.0.0.Final.jar
neethi-3.0.3.jar
xmlschema-core-2.1.0.jar
<!--[if !supportLists]-->2. <!--[endif]-->设置共享库:
点击环境-->共享库-->选择作用域=tranJQ -->新建
设置名称为:hibernate-jpa-2.1-api-1.0.0.Final,类路径为:${WAS_INSTALL_ROOT}/optionalLibraries/hibernate-jpa-2.1-api-1.0.0.Final.jar-->应用-->保存-->确定
点击环境-->共享库-->选择作用域=tranJQ -->新建
设置名称为:neethi-3.0.3,类路径为:${WAS_INSTALL_ROOT}/optionalLibraries/ neethi-3.0.3.jar-->应用-->保存-->确定
点击环境-->共享库-->选择作用域=tranJQ -->新建
设置名称为:xmlschema-core-2.1.0,类路径为:${WAS_INSTALL_ROOT}/optionalLibraries/ xmlschema-core-2.1.0.jar-->应用-->保存-->确定
<!--[if !supportLists]-->3. <!--[endif]-->应用共享库:
点击服务器-->集群-->WebSphere Application Server 集群--> tranJQ -->集群成员--> tranNode01-->Java 和进程管理-->类装入器-->新建-->选择:类已装入并且是先使用本地类装入器(父类最后)-->应用-->保存-->确定
点击刚刚创建的Classloader-->共享库引用-->添加-->选择:hibernate-jpa-2.1-api-1.0.0.Final-->应用-->保存-->确定
点击刚刚创建的Classloader-->共享库引用-->添加-->选择:neethi-3.0.3 -->应用-->保存-->确定
点击刚刚创建的Classloader-->共享库引用-->添加-->选择:xmlschema-core-2.1.0 -->应用-->保存-->确定
点击服务器-->集群-->WebSphere Application Server 集群--> tranJQ -->集群成员--> tranNode02-->Java 和进程管理-->类装入器-->新建-->选择:类已装入并且是先使用本地类装入器(父类最后)-->应用-->保存-->确定
点击刚刚创建的Classloader-->共享库引用-->添加-->选择:hibernate-jpa-2.1-api-1.0.0.Final-->应用-->保存-->确定
点击刚刚创建的Classloader-->共享库引用-->添加-->选择:neethi-3.0.3 -->应用-->保存-->确定
点击刚刚创建的Classloader-->共享库引用-->添加-->选择:xmlschema-core-2.1.0 -->应用-->保存-->确定
相关推荐
Java CXF Webservice接口在处理Web服务时,可能会遇到跨域问题,这通常是由于浏览器的安全策略限制了不同源之间的通信。解决这个问题的关键在于理解和应用CORS(Cross-Origin Resource Sharing)机制。CORS允许...
【标题】"CXF Webservice+Mybatis" 深度解析 在现代软件开发中,集成不同的技术栈以构建高效、可维护的系统是常见的做法。本篇将深入探讨如何利用Apache CXF作为Web服务框架,与Mybatis作为持久层框架进行整合,...
cxf WebService jar包
2. **CXF_HELLO_Object**: 此项目可能是对对象级别的操作进行了演示,可能涉及发送和接收复杂的数据类型,而不仅仅是基本的字符串。 3. **CXF_HELLO_ObjectSpringService**: 这个项目可能结合了CXF和Spring框架,...
【标题】"mybatis+spring+cxf Webservice框架"是一个集成性的开发框架,它结合了三个主流的...通过深入研究这个示例项目,开发者可以学习到如何在实际项目中有效利用这些技术,提升自己的开发技能和解决问题的能力。
CXF(CXF: Composite eXtensible Framework)是一个开源的Java框架,它主要用于构建和开发Web服务。CXF使得开发者能够轻松地创建和部署高质量、高性能的SOAP和RESTful Web服务。CXF工具类是CXF框架的一部分,提供了...
2.用cxf开发webservice 3.这个服务端和客户端的小demo 在服务端 对外开放接口服务,然后在客户端 调用服务端的方法, 实现客户端(一个javaweb项目)对服务端(javaweb项目)方法的调用, 实际上就是发送和接收消息...
使用jdk1.6、cxf2.3和tomcat开发的一个关于验证码的webservice接口,主要实现对手机验证码的验证。
实战Web+Service+with+CXF webservice快速入门 webservice快速入门
【CXF Webservice Demo】是基于Apache CXF框架的一个示例项目,用于演示如何使用CXF来创建和消费Web服务。Apache CXF是一个开源的Java框架,它允许开发者构建和集成Web服务,支持多种Web服务标准,如SOAP、RESTful ...
webService调取IP所在地,以及获得客户端真实IP
【标题】"maven项目 cxf webservice"指的是使用Maven构建的一个项目,该项目集成了Apache CXF框架来开发Web服务。Apache CXF是一个开源的Java框架,它允许开发者创建和消费各种Web服务,包括SOAP和RESTful服务。...
9. **错误处理与日志**:CXF提供了详细的错误处理机制和日志记录,便于调试和问题排查。通过定制错误处理器和日志配置,可以优化错误信息的输出和调试体验。 10. **性能优化**:CXF支持各种性能优化策略,如缓存、...
C#动态调用CXF WEBSERVICE框架共通类。
webservice示例 springmvc+maven+cxf发布webservice 博客地址 http://blog.csdn.net/joe_storm/article/details/78839150
使用cxf webservice时容易出现的异常
- 日志和调试:CXF支持日志记录和调试工具,帮助开发者定位问题。 **5. RESTful服务与CXF** 除了传统的SOAP服务,CXF也支持RESTful服务的开发。REST(Representational State Transfer)是一种轻量级的架构风格,...
本示例工程是基于CXF框架构建的一个Webservice应用,该应用集成了Spring框架,以实现更高效的服务管理和依赖注入。CXF是一个开源的Web服务框架,它允许开发者创建和部署SOAP和RESTful服务,同时也支持WS-*标准,如...
CXF(CXF: Composite eXtensible Framework)是一个开源的Java框架,它主要用于构建和部署Web服务。CXF使得开发者能够轻松地实现基于SOAP、RESTful等不同风格的Web服务,并且支持多种协议,如HTTP、JMS等。本示例...
5. 消费服务:客户端可以通过CXF的客户端API调用服务,获取"Hello, World!"响应。 接下来,我们要讨论的是如何通过CXF传递复杂数据类型,如`List`和`Map`。CXF支持数据绑定,可以自动将Java对象转换为XML消息,反之...