标签: spring-ws

将SoapHeader添加到org.springframework.ws.WebServiceMessage

如何将对象添加到a的soap标头中 org.springframework.ws.WebServiceMessage

这是我希望最终得到的结构:

 <soap:Header>
    <credentials xmlns="http://example.com/auth">
      <username>username</username>
      <password>password</password>
    </credentials>
  </soap:Header>
Run Code Online (Sandbox Code Playgroud)

java spring soap web-services spring-ws

13
推荐指数
4
解决办法
3万
查看次数

Spring-WS生成WSDL而不进行操作

Spring-WS生成WSDL而没有绑定标记中的操作......你知道为什么吗?

有我的spring-ws-service.xml:

    <import resource="classpath*:application-context.xml" />

    <!-- Register PayloadRootAnnotationMethodEndpointMapping -->
    <bean class="org.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMapping" />

    <!-- Register Endpoint -->
    <bean id="tasktablerServiceEndpoint" class="tasktabler.mpk.service.TasktablerServiceEndpoint" />

    <!-- Configure XML Marshaller -->
    <bean class="org.springframework.ws.server.endpoint.adapter.GenericMarshallingMethodEndpointAdapter">
        <constructor-arg ref="marshaller" />
    </bean>

    <bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
        <property name="classesToBeBound">
            <list>
                <value>tasktabler.mpk.databinding.OptimizeRequest</value>
            </list>
        </property>
    </bean>

    <!-- Add automatic WSDL generation support -->
    <bean id="tasktabler" class="org.springframework.ws.wsdl.wsdl11.DefaultWsdl11Definition">
        <property name="schema" ref="schema" />
        <property name="portTypeName" value="tasktabler" />
        <property name="locationUri" value="http://localhost:8080/tasktabler" />
        <property name="targetNamespace" value="http://tasktabler" />
    </bean>

    <bean id="schema" class="org.springframework.xml.xsd.SimpleXsdSchema">
        <property name="xsd" value="/WEB-INF/schema.xsd" />
    </bean>
Run Code Online (Sandbox Code Playgroud)

并且有WSDL的wsdl绑定部分:

   <wsdl:binding name="tasktablerSoap11" type="tns:tasktabler"> …
Run Code Online (Sandbox Code Playgroud)

java wsdl web-services spring-ws

12
推荐指数
1
解决办法
2万
查看次数

Web上下文根是否有内置的Spring环境变量?

我正在使用Spring Web Services将服务公开为Web服务.在我的spring配置xml文件中,我有一个bean,它是DefaultWsdl11Definition的一个实例.需要设置的属性之一是locationUri.这需要是一个完全合格的Uri,但是当应用程序从dev升级到uat和生产时,我不想更改此值.Spring知道Web应用程序上下文根是什么,所以我可以在配置文件中指定一个变量来访问它吗?

就像是:

<bean id="myWebServices"
    class="org.springframework.ws.wsdl.wsdl11.DefaultWsdl11Definition">
    <property name="schemaCollection">
        <bean
            class="org.springframework.xml.xsd.commons.CommonsXsdSchemaCollection">
            <property name="xsds" ref="xsdList"/>
            <property name="inline" value="true" />
        </bean>
    </property>
    <property name="portTypeName" value="myWebServices" />
    <property name="locationUri" value="${webContextRoot}/webServices" />
</bean>
Run Code Online (Sandbox Code Playgroud)

java spring spring-ws contextpath

12
推荐指数
2
解决办法
1万
查看次数

Spring Web Service Response中没有端点适配器

我只是无法使用Spring Web Services弄清楚这个错误.我相信我做的一切都正确.

肥皂错误响应

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
   <SOAP-ENV:Header/>
   <SOAP-ENV:Body>
      <SOAP-ENV:Fault>
         <faultcode>SOAP-ENV:Server</faultcode>
         <faultstring xml:lang="en">No adapter for endpoint [public void org.imsglobal.www.services.lis.pms2p0.wsdl11.sync.imspms_v2p0.PersonManagerSyncSoapBindingImpl.readPerson(org.imsglobal.www.services.lis.pms2p0.wsdl11.sync.imspms_v2p0.ReadPersonRequest,org.imsglobal.www.services.lis.pms2p0.wsdl11.sync.imspms_v2p0.Imsx_RequestHeaderInfoType,org.imsglobal.www.services.lis.pms2p0.wsdl11.sync.imspms_v2p0.holders.ReadPersonResponseHolder,org.imsglobal.www.services.lis.pms2p0.wsdl11.sync.imspms_v2p0.holders.Imsx_ResponseHeaderInfoTypeHolder)]: Is your endpoint annotated with @Endpoint, or does it implement a supported interface like MessageHandler or PayloadEndpoint?</faultstring>
      </SOAP-ENV:Fault>
Run Code Online (Sandbox Code Playgroud)

注释

@Endpoint  
public class PersonManagerSyncSoapBindingImpl implements org.imsglobal.www.services.lis.pms2p0.wsdl11.sync.imspms_v2p0.PersonManagerSyncPortType{


    @PayloadRoot(localPart = "readPersonRequest", namespace = "http://www.imsglobal.org/services/lis/pms2p0/wsdl11/sync/imspms_v2p0")
    @ResponsePayload
    public void readPerson(@RequestPayload org.imsglobal.www.services.lis.pms2p0.wsdl11.sync.imspms_v2p0.ReadPersonRequest parameters, org.imsglobal.www.services.lis.pms2p0.wsdl11.sync.imspms_v2p0.Imsx_RequestHeaderInfoType headerInfoParameters, @RequestPayload org.imsglobal.www.services.lis.pms2p0.wsdl11.sync.imspms_v2p0.holders.ReadPersonResponseHolder response, @RequestPayload org.imsglobal.www.services.lis.pms2p0.wsdl11.sync.imspms_v2p0.holders.Imsx_ResponseHeaderInfoTypeHolder headerInfoResponse) {
        response.value = new org.imsglobal.www.services.lis.pms2p0.wsdl11.sync.imspms_v2p0.ReadPersonResponse();
        headerInfoResponse.value = new org.imsglobal.www.services.lis.pms2p0.wsdl11.sync.imspms_v2p0.Imsx_ResponseHeaderInfoType();
    }
Run Code Online (Sandbox Code Playgroud)

弹簧-WS-servlet.xml中

<?xml version="1.0" encoding="UTF-8"?>  
<beans xmlns="http://www.springframework.org/schema/beans"  
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" …
Run Code Online (Sandbox Code Playgroud)

java spring spring-ws

12
推荐指数
2
解决办法
2万
查看次数

Spring WS:如何获取和保存XSD验证错误

我使用SpringWS作为我的soap服务并像这样验证它;

 <sws:interceptors>
    <bean id="payloadValidatingInterceptor" class="org.springframework.ws.soap.server.endpoint.interceptor.PayloadValidatingInterceptor">
        <property name="schema" value="/schemas/my.xsd"/>
        <property name="validateRequest" value="false"/>
        <property name="validateResponse" value="true"/>
    </bean>
Run Code Online (Sandbox Code Playgroud)

@PayloadRoot(namespace = NAMESPACE,  localPart = "ServiceProvider")
@ResponsePayload
public ServiceProviderTxn getAccountDetails(@RequestPayload ServiceProviderrequest)
{ ...}
Run Code Online (Sandbox Code Playgroud)

这样可以正常工作,但是当出现错误时,它会在到达端点之前返回弹簧生成的错误响应,因此我从来没有机会处理它们.但我希望能够将完整的错误消息记录并保存到数据库.我发现的一种方法是在我的另一个问题中做这样的事情;

Spring WS如何在验证失败时获取所有错误消息

但它不能按我的意愿工作.

java spring spring-ws

12
推荐指数
1
解决办法
1333
查看次数

如何在Spring中构建SOAP客户端?

我能够使用Web服务发送请求javax.xml.soap.*,我想隐藏代码使用webServiceTemplate.

  • 我正在努力创建请求和结果对象.(我发现的样本与xml而非SOAP有关)
  • 我也想知道使用webServiceTemplate 结束是否有任何好处 java.xml.soap.如果我不能正确地做到这一点?鉴于我需要连接到20个Web服务.

它唯一的服务findEvents如下:

<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="http://ticketmaster.productserve.com/v2/soap.php" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
   <soapenv:Header/>
   <soapenv:Body>
      <soap:findEvents soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
         <request xsi:type="soap:Request">
            <!--You may enter the following 7 items in any order-->
            <apiKey xsi:type="xsd:string">?</apiKey>
            <country xsi:type="xsd:string">?</country>
            <resultsPerPage xsi:type="xsd:int">?</resultsPerPage>
            <currentPage xsi:type="xsd:int">?</currentPage>
            <sort xsi:type="soap:Request_Sort">
               <!--You may enter the following 2 items in any order-->
               <field xsi:type="xsd:string">?</field>
               <order xsi:type="xsd:string">?</order>
            </sort>
            <filters xsi:type="soap:ArrayOfRequest_Filter" soapenc:arrayType="soap:Request_Filter[]"/>
            <updatedSince xsi:type="xsd:string">?</updatedSince>
         </request>
      </soap:findEvents>
   </soapenv:Body>
</soapenv:Envelope>
Run Code Online (Sandbox Code Playgroud)

我的代码如下:

try {
    SOAPConnectionFactory soapConnectionFactory =
            SOAPConnectionFactory.newInstance();
    SOAPConnection …
Run Code Online (Sandbox Code Playgroud)

java spring web-services spring-ws webservicetemplate

12
推荐指数
1
解决办法
8185
查看次数

将WebServiceTemplate与密钥库一起使用

是否可以使用java密钥库配置WebServiceTemplate?

编辑
我正在寻找一种在spring配置中配置密钥库位置的方法

java ssl spring spring-ws

11
推荐指数
2
解决办法
2万
查看次数

由于缺少bean端点映射,迁移到Spring WS 2.0失败了?

我们使用PayloadRootQNameEndpointMapping(基于脚本语言如Groovy或别的东西),以给定的根映射端点脚本QName.我们最近尝试将spring ws迁移到2.0版.PayloadRootQNameEndpointMapping的javadoc 显示该类被标记为已弃用.

PayloadRootQNameEndpointMapping 从Spring Web Services 2.0开始,不赞成使用 PayloadRootAnnotationMethodEndpointMapping

由于注释是静态的,因此我们无法为脚本编写端点提供动态概念.到目前为止,我们可以将处理脚本端点(提供脚本文件和一些上下文)的Bean一般映射到根QName.

:我们如何在不使用已弃用的API的情况下实现好的旧bean端点到Root QName映射?有任何想法吗?

先感谢您.

java spring spring-ws

11
推荐指数
1
解决办法
600
查看次数

Spring WS - STS中的一步一步(来自WSDL)

我正在尝试在Spring Tool Suite(STS)中创建一个新的Spring Web服务项目.我查看了这个链接
http://static.springsource.org/spring-ws/site/reference/html/tutorial.html
但是这并没有说清楚步骤.

任何人都可以分享链接到一些有用的资源,逐步显示如何创建一个Spring WS项目?

java spring web-services spring-ws

11
推荐指数
2
解决办法
3万
查看次数

使用Spring Web服务客户端解密消息

350赏金和华夫饼给能帮助我的人!

我一直在努力使用Spring Web Service加密几天,我无法弄清楚如何让Spring的加密功能在消息体上运行.每当我让服务器加密生成的消息时,客户端似乎在尝试根据Schema(XSD)验证它之前没有对其进行解密.

这是服务器端配置

服务器的xwss安全配置

客户端的Spring配置

客户端的xwss配置

我能做的是加密用户令牌并成功解密.我在从客户端向服务器发送数据时这样做.然后,服务器解密用户令牌并验证用户凭据,这非常有效.

如果我尝试加密回来的邮件正文,就会出现问题.问题发生在客户端.似乎客户端在解密之前尝试验证消息,因此在验证模式时会发生错误.

[Fatal Error] :1:192: The prefix "ns0" for element "ns0:HolidayListResponse" is not bound.
11-Dec-2009 7:45:32 AM com.sun.xml.wss.impl.apachecrypto.DecryptionProcessor decryptElementWithCipher
SEVERE: WSS1203: Exception [ The prefix "ns0" for element "ns0:HolidayListResponse" is not bound. ] while trying to decrypt message
Run Code Online (Sandbox Code Playgroud)

这是SOAP响应本身.

这是编组映射文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapping PUBLIC "-//EXOLAB/Castor Mapping DTD Version 1.0//EN"
                         "http://castor.org/mapping.dtd">
<mapping>
    <field-handler name="dateHandler" class="com.mycompany.hr.handlers.DateFieldHandler" />
    <field-handler name="dateHandler2" class="com.mycompany.hr.handlers.DateFieldHandler" />
    <class name="com.mycompany.hr.data.Holiday">
        <map-to ns-uri="http://mycompany.com/hr/schemas" ns-prefix="ns0" xml="Holiday" …
Run Code Online (Sandbox Code Playgroud)

java security spring web-services spring-ws

10
推荐指数
1
解决办法
2334
查看次数