• 用 Eclipse 开发 WebService 项目


    1、安装tomcat

    2、安装CXF

    一、为新渠道webservice加入到项目中
    首先,创建一个springboot项目,名为webservice-baffle(附件中)。
    第二步,新建web service 服务端
    右击webservice-baffle项目,新建“other”,在弹出框中选择“web service”,出现如下弹出框
    截图中:
    1、web service type:选择 Top down java bean web service
    2、web service的http url
    3、选择tomcat,如果没有环境,自己下载tomcat并安装配置下
    4、选择apache CXF 2.x,如果没有,自己下载和安装下
    下一步,出现如下提示框,默认到完成。
    最后,生成一个WebServiceProject项目。
    第三步:将生产的java类拷贝到webservice-baffle项目中:

    第四步:注册webservice接口到servlet中:
    该操作的代码在com.xxx.xxx.config.EndpointConfig.java
    @Configuration
    public class CxfConfig {
     
        @Autowired
        private Bus bus;   //private SpringBus bus;
        @Autowired
        private CommonService commonService;
     
        //  配置CXF服务发布,默认服务是在host:port/services/发布地址
        // 访问地址 http://127.0.0.1:8080/Service/common?wsdl
        @Bean
        public Endpoint another_endpoint() {
            EndpointImpl endpoint = new EndpointImpl(bus, commonService);
            endpoint.publish("/common");   //发布地址
            return endpoint;
        }
        // 访问地址 http://127.0.0.1:8080/Service/hello?wsdl
        @Bean
        public Endpoint endpoint() {
            EndpointImpl endpoint = new EndpointImpl(bus,  new HelloServiceImpl());
            endpoint.publish("/hello");    //发布地址
            return endpoint;
        }
    完成。

     

    问题:

    1、与Spring整合问题
    Caused by: org.apache.cxf.ws.policy.PolicyException: These policy alternatives can not be satisfied: 
    {http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702}SupportingTokens
    {http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702}UsernameToken
    at org.apache.cxf.ws.policy.AssertionInfoMap.checkEffectivePolicy(AssertionInfoMap.java:166)
    at org.apache.cxf.ws.policy.PolicyVerificationInInterceptor.handle(PolicyVerificationInInterceptor.java:101)

    解决方法
    esb-server.xml配置增加
    <cxf:bus>
    <cxf:properties>
    <entry key="org.apache.cxf.message.Message.ENCODING" value="UTF-8"/>
    </cxf:properties>
    <cxf:features>
    <cxf:logging/>
    <p:policies enabled="false" />
    </cxf:features>
    </cxf:bus>

        @Bean(name = Bus.DEFAULT_BUS_ID)
        public SpringBus springBus() {
            SpringBus springBus = new SpringBus();
            WSPolicyFeature wpf = new WSPolicyFeature();
            wpf.setEnabled(false);
            Collection<Feature> features = springBus.getFeatures();
            features.add(wpf);
            return springBus;
        }
  • 相关阅读:
    idea不显示gradle的视图解决办法
    curl: (51) Unable to communicate securely with peer: requested domain name does not match the server's certificate.报错
    记录使用yum安装nginx之后的目录问题
    已安装nginx动态添加模块
    nginx的http_sub_module模块使用之替换字符串
    利用referer属性,记录百度搜索跳转参数
    Springboot中Aspect实现切面(以记录日志为例)
    vue_axios请求封装、异常拦截统一处理
    使用jetty工具包处理url参数成map
    利用Java自带的MD5加密
  • 原文地址:https://www.cnblogs.com/duanxz/p/4368229.html
Copyright © 2020-2023  润新知