当前位置: 首页 > 知识库问答 >
问题:

JavaSpring Boot与CXF生成SOAP 1.2endpoint

景修杰
2023-03-14

几天来,我一直在尝试使用带有Apache CXF的Spring Boot来生成SOAP 1.2endpoint,但是即使WSDL不使用SOAP 1.1命名空间,Spring仍然在同一位置生成SOAP 1.1和SOAP 1.2endpoint!

我的wsdl定义只有SOAP 1.2的endpoint

<wsdl:service name="MyService"> 
  <wsdl:port name="IMyServicePort" binding="tns:IMyServiceBinding"> 
    <soap12:address location="http://localhost:8080/MyService/services/IMyServicePort"/> 
  </wsdl:port> 
</wsdl:service> 

web服务beans文件包含以下内容;

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:util="http://www.springframework.org/schema/util" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxws="http://cxf.apache.org/jaxws" xmlns:soap="http://cxf.apache.org/bindings/soap"
xsi:schemaLocation="http://www.springframework.org/schema/beans      
   http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
   http://www.springframework.org/schema/util
   http://www.springframework.org/schema/util/spring-util-2.0.xsd
   http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
   http://cxf.apache.org/bindings/soap http://cxf.apache.org/schemas/configuration/soap.xsd">

<!-- Import the necessary CXF configuration files -->
<import resource="classpath:META-INF/cxf/cxf.xml" />
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />

<bean id="messageFactory" class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory">
    <property name="soapVersion">
        <util:constant static-field="org.springframework.ws.soap.SoapVersion.SOAP_12" />
    </property>
    <property name="messageFactory">
        <null />
    </property>
</bean>


<jaxws:endpoint id="service" implementor="#ImyServiceImpl"
    address="/myService/v1" wsdlLocation="wsdl/MyService.wsdl">
    <jaxws:binding>
        <soap:soapBinding mtomEnabled="true" version="1.2"/>
    </jaxws:binding>
    <jaxws:properties>
        <entry key="schema-validation-enabled" value="true" />
        <entry key="jaxb-validation-event-handler">
            <bean
                class="myservice.OutSoapFaultInterceptor"></bean>
        </entry>
    </jaxws:properties>
</jaxws:endpoint>
</beans>

但是,当我浏览到wsdl时,我看到了SOAP 1.1和SOAP 1.2endpoint

<wsdl:service name="MyService"> 
  <wsdl:port binding="tns:IMyServiceBinding" name="IMyServicePort"> 
    <soap12:address location="http://localhost:8080/services/services/myservice/v1"/> 
  </wsdl:port> 
</wsdl:service> 
<wsdl:service name="IMyServiceService"> 
  <wsdl:port binding="tns:IMyServiceSoapBinding" name="IMyServicePort"> 
    <soap:address location="http://localhost:8080/services/services/myservice/v1"/> 
  </wsdl:port> 
</wsdl:service> 

令人烦恼的是,两者都被定义为相同的endpoint位置,所以我无法访问SOAP 1.2endpoint,所有请求都被拒绝,并显示“当发送到SOAP 1.1endpoint时,SOAP 1.2消息无效。”

我可以通过在Java中定义endpoint来解决这个问题(尽管我不知道如何在Java代码中复制jaxb-validation-event-handler!),但我更愿意使用XML配置。

是否有人建议只生成SOAP 1.2endpoint,或者知道如何分离endpoint位置以便我可以将请求发送到SOAP 1.2endpoint?

共有1个答案

慕永年
2023-03-14

好吧,我不知道为什么WSDL会生成SOAP 1.1接口...但是,为了解决我的问题,我刚刚从jaxws:endpoint定义中删除了wsdlLocation,所以;

<jaxws:endpoint id="service" implementor="#ImyServiceImpl"
    address="/myService/v1" wsdlLocation="wsdl/MyService.wsdl">

成为;

<jaxws:endpoint id="service" implementor="#ImyServiceImpl"
    address="/myService/v1">

如果我浏览到/myService/v1,现在只有一个SOAP1.2定义。

 类似资料:
  • 问题内容: 我正在尝试获取 cxf-codegen-plugin 以从wsdl文件生成源。当调用wsdl2java手册时,会生成所需的类,但是当使用 mvn generate-sources时, 什么也不会发生,并且我收到消息“项目不需要目标”。直接调用插件没有帮助。 我的诗歌摘录如下: 问题答案: 这看起来非常像我(成功)在我的一个项目中配置该插件的方式。我希望它能奏效。(我相信您可以省略;的默

  • 我正在尝试让cxf-codegen-plugin从我的wsdl文件生成源代码。当调用wsdl2java manual时,生成了所需的类,但当使用mvn generate-sources时,什么也没有发生,我得到的消息是“No goals needed for Project”。直接调用插件没有帮助。

  • 有几种从wsdl生成java类的方法,例如Apache CXF、JAXB和JAX-WS。 我需要一个解决方案,工作与maven和曲库文件。 我的问题是,我有两个Maven模块A和B。其中一个模块(模块A)包含逻辑类,另一个模块(模块B)包含作为资源的xsd文件。现在我想从逻辑模块(模块A)生成类,xsd文件不应该作为资源添加到此模块。 我已经创建了一个catalag。包含公共名称空间并指向mave

  • 我们正在SpringBoot中开发一个应用程序,我们将在运行时创建动态表单并将其发布到应用程序中,以JSON格式将表单数据发布到db(MySql)中。我们希望创建一个通用api来处理所有动态表单的CRUD操作。 我们知道php code-igniter框架查询生成器,它能够构建和执行查询。 https://www.codeigniter.com/userguide3/database/query_