请教关于CXF的地址配置问题

发布于 2021-11-06 16:10:47 字数 877 浏览 867 评论 9

工程中有大量webservice接口,服务端、客户端都有,我们全部使用apache cxf编写的,然后使用cxf与spring结合。例如以下是一个客户端的cxf+spring的配置:

 <!-- 短信网关下行客户端 -->
    <bean id="uvsmsClient" class="com.oraro.mboss.ua.sim.service.ws.client.uvsms.UVSMSINTFPortType" 
      factory-bean="uvsmsClientFactory" factory-method="create"/>    
    <bean id="uvsmsClientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
      <property name="serviceClass" value="com.oraro.mboss.ua.sim.service.ws.client.uvsms.UVSMSINTFPortType"/>
      <property name="address" value="http://135.224.113.10:7001/XJCTSWSMSINTF/services/UVSMSINTF"/>
    </bean>

注意到里面的address那个属性,就是webservice服务端的发布地址。

现在的问题是:我想把服务端地址这个属性改成使用数据库配置,这样以后需要修改什么第三方平台的地址的时候,改改数据库就行了,不用再去修改spring的配置文件、重启服务之类的。

请教大家,这个应该怎么做呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

韬韬不绝 2021-11-08 22:29:32

你用Spring load 配置文件的bean   从数据库读取后 写到properties里  然后  address 用 properties 的key 表示 

够钟 2021-11-08 22:29:25

是不是大家使用cxf的时候,服务端地址都是直接写在spring配置文件中的呃,木有人使用数据库的方式吗

醉生梦死 2021-11-08 22:29:15

我觉得prototype作用域不大合适。。。

皇甫轩 2021-11-08 22:02:43

你用SpEL不可以吗? 更改后能重新载入你试试 scope="prototype" , 这样还是不可以的话就只能自己写个aspect来重新载入了

平生欢 2021-11-08 21:56:41

始终没找出如何动态改变spring配置文件并生效

启动即注入,更改后也不会重新载入,求方法

柒夜笙歌凉 2021-11-08 18:59:02

你可以使用SpEL , 注册一个bean , 在这个bean里面写一个方法(从数据库查找服务器的地址),通过SpEL设置value的值 value =" #{beanName.selectServiceIp()} "

但是像楼上说的那样, 不是很推荐你这么干

泛泛之交 2021-11-08 17:12:40

应用跑在1个集群上,集群里有4台主机、12个实例,工程里面有n个配置文件呢。。。。。

蓝颜夕 2021-11-08 14:03:28

。。。你这个需求真奇怪,难道修改配置文件不比修改数据库更方便吗?

兮颜 2021-11-08 10:20:00

其实麻烦的地方就在于那两个bean, uvsmsClientFactory 这个工厂对象创建的时候就需要提供address属性,所以当时直接把地址写在了spring的配置文件中了。

uvsmsClientFactory对象应该是singlton作用域的,uvsmsClient也是singlton作用域的。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文