`

cxf webservice解决ip获取不正确的问题

阅读更多

前言:

      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接口解决跨域问题

    Java CXF Webservice接口在处理Web服务时,可能会遇到跨域问题,这通常是由于浏览器的安全策略限制了不同源之间的通信。解决这个问题的关键在于理解和应用CORS(Cross-Origin Resource Sharing)机制。CORS允许...

    CXF webservice+mybatis

    【标题】"CXF Webservice+Mybatis" 深度解析 在现代软件开发中,集成不同的技术栈以构建高效、可维护的系统是常见的做法。本篇将深入探讨如何利用Apache CXF作为Web服务框架,与Mybatis作为持久层框架进行整合,...

    cxf WebService jar包(1)

    cxf WebService jar包

    cxf webservice demo

    2. **CXF_HELLO_Object**: 此项目可能是对对象级别的操作进行了演示,可能涉及发送和接收复杂的数据类型,而不仅仅是基本的字符串。 3. **CXF_HELLO_ObjectSpringService**: 这个项目可能结合了CXF和Spring框架,...

    mybatis+spring+cxf Webservice框架

    【标题】"mybatis+spring+cxf Webservice框架"是一个集成性的开发框架,它结合了三个主流的...通过深入研究这个示例项目,开发者可以学习到如何在实际项目中有效利用这些技术,提升自己的开发技能和解决问题的能力。

    CXF webService 工具类

    CXF(CXF: Composite eXtensible Framework)是一个开源的Java框架,它主要用于构建和开发Web服务。CXF使得开发者能够轻松地创建和部署高质量、高性能的SOAP和RESTful Web服务。CXF工具类是CXF框架的一部分,提供了...

    Java cxf开发webservice,分别有客户端和服务端

    2.用cxf开发webservice 3.这个服务端和客户端的小demo 在服务端 对外开放接口服务,然后在客户端 调用服务端的方法, 实现客户端(一个javaweb项目)对服务端(javaweb项目)方法的调用, 实际上就是发送和接收消息...

    CXF webservice 验证码接口

    使用jdk1.6、cxf2.3和tomcat开发的一个关于验证码的webservice接口,主要实现对手机验证码的验证。

    实战Web+Service+with+CXF webservice快速入门

    实战Web+Service+with+CXF webservice快速入门 webservice快速入门

    CXF webservice Demo

    【CXF Webservice Demo】是基于Apache CXF框架的一个示例项目,用于演示如何使用CXF来创建和消费Web服务。Apache CXF是一个开源的Java框架,它允许开发者构建和集成Web服务,支持多种Web服务标准,如SOAP、RESTful ...

    webService调取IP所在地,以及获得客户端真实IP

    webService调取IP所在地,以及获得客户端真实IP

    maven项目 cxf webservice

    【标题】"maven项目 cxf webservice"指的是使用Maven构建的一个项目,该项目集成了Apache CXF框架来开发Web服务。Apache CXF是一个开源的Java框架,它允许开发者创建和消费各种Web服务,包括SOAP和RESTful服务。...

    webService(基于cxf)的完整例子

    9. **错误处理与日志**:CXF提供了详细的错误处理机制和日志记录,便于调试和问题排查。通过定制错误处理器和日志配置,可以优化错误信息的输出和调试体验。 10. **性能优化**:CXF支持各种性能优化策略,如缓存、...

    C#动态调用CXF WEBSERVICE框架的共通类

    C#动态调用CXF WEBSERVICE框架共通类。

    cxf发布webservice示例

    webservice示例 springmvc+maven+cxf发布webservice 博客地址 http://blog.csdn.net/joe_storm/article/details/78839150

    使用cxf webservice时容易出现的异常

    使用cxf webservice时容易出现的异常

    CXF 一个完整的webService(整合客户端和服务端)

    - 日志和调试:CXF支持日志记录和调试工具,帮助开发者定位问题。 **5. RESTful服务与CXF** 除了传统的SOAP服务,CXF也支持RESTful服务的开发。REST(Representational State Transfer)是一种轻量级的架构风格,...

    CXF webservice 示例工程(集成spring)

    本示例工程是基于CXF框架构建的一个Webservice应用,该应用集成了Spring框架,以实现更高效的服务管理和依赖注入。CXF是一个开源的Web服务框架,它允许开发者创建和部署SOAP和RESTful服务,同时也支持WS-*标准,如...

    CXF WEBSERVICE

    CXF(CXF: Composite eXtensible Framework)是一个开源的Java框架,它主要用于构建和部署Web服务。CXF使得开发者能够轻松地实现基于SOAP、RESTful等不同风格的Web服务,并且支持多种协议,如HTTP、JMS等。本示例...

    CXF WebService实例

    5. 消费服务:客户端可以通过CXF的客户端API调用服务,获取"Hello, World!"响应。 接下来,我们要讨论的是如何通过CXF传递复杂数据类型,如`List`和`Map`。CXF支持数据绑定,可以自动将Java对象转换为XML消息,反之...

Global site tag (gtag.js) - Google Analytics