前言:
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 -->应用-->保存-->确定
相关推荐
CXF webService 工具类
CXF webservice,mybatis持久层框架,增删改查实例;完整jar包;
cxf WebService jar包
java cxf webservice接口解决跨域问题,cors-filter-1.7.jar、java-property-utils-1.9.jar,以及web.xml文件配置
Web Service学习-CXF开发Web Service的权限控制(二)
maven项目 cxf webservice mongodb mysql 公司真实现目初期实现
2.用cxf开发webservice 3.这个服务端和客户端的小demo 在服务端 对外开放接口服务,然后在客户端 调用服务端的方法, 实现客户端(一个javaweb项目)对服务端(javaweb项目)方法的调用, 实际上就是发送和接收消息...
使用jdk1.6、cxf2.3和tomcat开发的一个关于验证码的webservice接口,主要实现对手机验证码的验证。
mybatis+spring+cxf webservice服务 项目框架代码例子,绝对是可以参考的,信不信,只有下载之后才知道
实战Web+Service+with+CXF webservice快速入门 webservice快速入门
webService调取IP所在地,以及获得客户端真实IP
cxf webService
C#动态调用CXF WEBSERVICE框架共通类。
使用 CXF 做 webservice 简单例子,用的是cxf-2.1.3.jar
现在主流的webService框架,一个是axis2,一个是cxf,本资源是基于cxf框架的简单例子
webservice示例 springmvc+maven+cxf发布webservice 博客地址 http://blog.csdn.net/joe_storm/article/details/78839150
使用cxf webservice时容易出现的异常
cxf 开发webservice客户端 代码经过测试
SSH整合cxf webservice实例
CXF开发webservice服务端,希望对大家有所帮助