• java如何实现webservice中wsdlLocation访问地址的可配置化


    背景:项目中调用了别的系统的webservice接口,调用成功之后发现wsdlLocation的地址是写死的,不方便修改,所以需要实现地址,包括用户名密码的可配置。项目的框架是Spring,调用webservice使用的是CXF。

    实现可配置步骤:

    step1:在spring的配置文件中加入如下配置

    <!-- @value 配置资源文件 -->
    <bean id="configProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
    <property name="locations">
    <list>
    <value>classpath:resources.properties</value>
    </list>
    </property>
    </bean>

    <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer">
    <property name="properties" ref="configProperties"/>
    </bean>
    上面的配置可以将字符串中的"${name}",转换为name在resource.property中设置的值。
    step2:使用CXF将wsdl解析为java代码,并且使用占位符"${name}"替换service文件中wsdlLocation和其他使用的地址的地方。如

    @WebServiceClient(name = "XXXXXX",
    wsdlLocation = "${ADDRESS}",
    targetNamespace = "urn:sap-com:document:sap:soap:functions:mc-style")
    public class XXXXXXX_Service extends Service {

    step3:使用CXF来调用webservice,首先需要将resource.property中的值注入到bean中,然后使用CXF来调用,如下
    @Value("${UserName}")
    private String UserName;
    @Value("${Password}")
    private String PassWord;
    @Value("${ADDRESS}")
    private String Address;
    JaxWsProxyFactoryBean bean=new JaxWsProxyFactoryBean();
    bean.setAddress(Address);
    bean.setServiceClass(Service_Interface.class);
    bean.setUsername(UserName);
    bean.setPassword(PassWord);
    Service_Interface port=(Service_Interface) bean.create();//得到service。
    port.method();//调用service的方法
    现在代码中就可以直接使用resource.property中配置的地址和用户名密码了

    ---------------------
    转自:https://blog.csdn.net/u012000209/article/details/55202721

  • 相关阅读:
    no route to host
    修改文件失败,提示E509: 无法创建备份文件 (请加 ! 强制执行)
    OAuth2.0的四种授权模式
    Django--JWT认证
    Django--数据库ORM操作
    DRF中限流、过滤、排序、分页
    Django框架中序列化与反序列化与字段验证
    21.Django三种风格的模型继承
    20.第三方微博登录Django+Vue
    博客园图片点击放大功能
  • 原文地址:https://www.cnblogs.com/liushui-sky/p/10831374.html
Copyright © 2020-2023  润新知