标签: spring-ws

jdbcTemplate.queryForList的返回类型(sql,object,classType)

我正在使用jdbcTemplate.queryForList以下列方式执行命名查询:

List<Conversation> conversations = jdbcTemplate.queryForList(
            SELECT_ALL_CONVERSATIONS_SQL_FULL,
            new Object[] {userId, dateFrom, dateTo});
Run Code Online (Sandbox Code Playgroud)

SQL查询是:

private final String SELECT_ALL_CONVERSATIONS_SQL_FULL = 
    "select conversation.conversationID, conversation.room, " +
    "conversation.isExternal, conversation.startDate, " +
    "conversation.lastActivity, conversation.messageCount " +
    "from openfire.ofconversation conversation " +
    "WHERE conversation.conversationid IN " +
    "(SELECT conversation.conversationID " +
    "FROM openfire.ofconversation conversation, " +
    "openfire.ofconparticipant participant " +
    "WHERE conversation.conversationID = participant.conversationID " +
    "AND participant.bareJID LIKE ? " +
    "AND conversation.startDate between ? AND ?)";
Run Code Online (Sandbox Code Playgroud)

但是,当以下列方式提取列表的内容时:

for (Conversation conversation : conversations) {
builder.append(conversation.getId());
            builder.append(","); …
Run Code Online (Sandbox Code Playgroud)

java spring-ws jdbctemplate

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

我可以在一个应用程序中使用Spring MVC和Spring WS吗?

基本上,有一个后端应用程序可以公开SOAP和RESTful服务.

我已决定将Spring WS 1.5.8用于SOAP服务,并将
Spring MVC 3.0用于RESTful服务,因为这是一项新功能.

在阅读了一些关于Spring WS(我是新手!)之后,我们在Spring WS的web.xml中声明了一个"MessageDispatcherServlet",它是一个前端控制器.

对于Spring MVC,我们应该在web.xml中声明一个"DispatcherServlet",它也是一个前端控制器.

对于这两个servlet,我们在web.xml中有不同的servlet声明.

即对于Spring WS我有

  <servlet>
  <servlet-name>springsoap</servlet-name>
  <servlet-class>org.springframework.ws.transport.http.MessageDispatcherServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
  <servlet-name>springsoap</servlet-name>
  <url-pattern>/soapservices/*</url-pattern>
  </servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

对于Spring MVC(RESTful),我有

<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/restservices/*</url-pattern>
    </servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

因此我应该使用2个配置文件?? 一个名为springmvc-servlet.xml,另一个名为springsoap-servlet.xml?

可以这样做吗?

spring-ws spring-mvc

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

没有端点适配器; 您的端点是使用@Endpoint注释的,还是实现了MessageHandler或PayloadEndpoint等受支持的接口?

我正在努力使用带有JMS示例的Spring-WS.我按照Spring的建议设置了Spring-WS和JMS接线.但我一直得到以下错误.我不知道如何绕过这个问题,任何帮助将不胜感激:

[org.springframework.ws.soap.server.endpoint.SoapFaultAnnotationExceptionResolver] - 
Resolving exception from endpoint 
[org.springframework.ws.samples.mtom.ws.ImageRepositoryEndpoint@1c8b0b1]: 
java.lang.IllegalStateException: No adapter for endpoint 
[org.springframework.ws.samples.mtom.ws.ImageRepositoryEndpoint@1c8b0b1]: 
Is your endpoint annotated with @Endpoint, or does it implement a supported interface like MessageHandler or PayloadEndpoint?

[org.springframework.ws.soap.server.endpoint.SimpleSoapExceptionResolver] - Resolving exception from endpoint
[org.springframework.ws.samples.mtom.ws.ImageRepositoryEndpoint@1c8b0b1]: 
java.lang.IllegalStateException: No adapter for endpoint [org.springframework.ws.samples.mtom.ws.ImageRepositoryEndpoint@1c8b0b1]: 
Is your endpoint annotated with @Endpoint, or does it implement a supported interface like MessageHandler or PayloadEndpoint?

[org.springframework.ws.soap.server.SoapMessageDispatcher] - 
Endpoint invocation resulted in exception - responding with Fault
java.lang.IllegalStateException: No adapter for endpoint  [org.springframework.ws.samples.mtom.ws.ImageRepositoryEndpoint@1c8b0b1]: 
Is your …
Run Code Online (Sandbox Code Playgroud)

java spring-ws jms

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

spring-boot-starter-web和spring-boot-starter-web-services以及spring-boot-starter-jersey之间的区别

你能不能帮助我了解spring-boot-starter-web VS spring-boot-starter-web-services VS spring-boot-starter-jersey之间的区别

文档说Starter用于使用JAX-RS和Jersey构建RESTful Web应用程序.spring-boot-starter-web的替代品

谢谢

java spring spring-ws spring-boot spring-web

17
推荐指数
1
解决办法
7392
查看次数

如何使用Spring-WS直接传输SOAP?

我们希望在Web服务端点中启用有效负载的直接流式传输.我们必须处理大量数据,并希望在处理时传输数据.

我们在版本2.0.0中使用spring-ws-core并使用PayloadRootQNameEndpointMappingas endpoint mapper.作为消息工厂,我们正在使用AxiomSoapMessageFactory.我们实现了StreamingPayload相应的writeTo(XMLStreamWriter writer)方法,我们用它来编写有效载荷(根据spring-ws JIRA票证,SWS-352).

这没有任何错误,但我们想直接流!这显然是不可能的.我们做了一个简单的测试,我们流式传输一些数据以评估行为.

writer.writeStartElement("exampleResponse")

10000.times
{
    writer.writeStartElement("example")
    writer.writeEndElement()    
}

writer.writeEndElement()
Run Code Online (Sandbox Code Playgroud)

我们假设这将直接流式传输到使用者/客户端,因此soap头已经写入我们的编写器并在端点完成后关闭.不幸的是,这是不可能的,流不能直接使用!流被包裹在一个ByteArrayInputStream,在spring-ws源中找到.

执行StreamingOMDataSource显示此(可以在SpringEye中查看).该StreamingOMDataSource呼叫你的StreamingPayload实现和给你一个作家这一点.

public XMLStreamReader getReader() throws XMLStreamException {
   ByteArrayOutputStream bos = new ByteArrayOutputStream();
   serialize(bos, null);

   ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
   return StAXUtils.createXMLStreamReader(bis);
}
Run Code Online (Sandbox Code Playgroud)

该方法#serialize()创建XMLStreamWriterByteArrayOutputStream并调用有效载荷,能写入,如上所述.

public void serialize(OutputStream output, OMOutputFormat format) 
       throws XMLStreamException
{
   XMLStreamWriter streamWriter;
   if ([...]) {
      // Create stream writer …
Run Code Online (Sandbox Code Playgroud)

java streaming spring soap spring-ws

16
推荐指数
1
解决办法
5248
查看次数

WebServiceGatewaySupport与WebServiceTemplate的优点

我必须使用Spring WS实现Web服务客户端.

我已经阅读了http://static.springsource.org/spring-ws/site/reference/html/client.html上的文档,但我不清楚扩展WebServiceGatewaySupport与直接WebServiceTemplate在我的服务类中使用有什么好处.

据我所知,从源代码可以看出,WebServiceGatewaySupport只有一些包装器方法可以用于WebServiceTemplate初始化和一些初始化支持.

那我为什么要扩展WebServiceGatewaySupport而不是直接使用WebServiceTemplate

谢谢!

spring-ws

16
推荐指数
1
解决办法
8415
查看次数

在Spring-WS中将子元素添加到自定义SOAP标头中

我正在使用Spring-WS调用SOAP Web服务.有问题的webservice要求我在SOAP头中传递一些信息,如下所示:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Header>
      <CustomHeaderElement>
         <clientID>xyz</clientID>
         <wsdlVersion>1.0</wsdlVersion>
         <serviceType>ExampleService_v1</serviceType>
      </CustomHeaderElement>
   </soapenv:Header>
   <soapenv:Body>
   ...
   </soapenv:Body>
</soapenv:Envelope>
Run Code Online (Sandbox Code Playgroud)

我已经弄清楚如何使用顶级CustomHeaderElement,但我没有在Spring-WS API中看到任何允许我添加子元素的内容.这是我到目前为止:

WebServiceTemplate template = ...;

template.marshalSendAndReceive(request, new WebServiceMessageCallback(){
    public void doWithMessage(WebServiceMessage message) throws IOException, TransformerException{
        SoapMessage soapMessage = (SoapMessage)message;
        SoapHeader soapHeader = soapMessage.getSoapHeader();
        QName qName = new QName("CustomHeaderElement");
        SOAPHeaderElement headerElement = soapHeader.addHeaderElement(qName);
        //would like to do something like headerElement.addChild(clientIdNode);
    }
});
Run Code Online (Sandbox Code Playgroud)

问题是headerElement似乎没有暴露任何实际添加子的方法.我知道我可以添加一个属性,但这不是我需要的服务调用.有谁知道如何将必要的子元素添加到我的自定义标题?

soap spring-ws header saaj

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

如何在spring-boot中使用WSDL?

我有客户端提供的WSDL和模式文件.我需要使用此WSDL文件创建Spring-boot SOAP Web服务.我有谷歌它和我能找到的所有例子,他们用spring自动生成wsdl.我如何使用我的WSDL生成SOAP服务?

soap spring-ws spring-boot

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

Spring-WS客户端没有设置SOAPAction头

我正在发送SOAP请求,服务器抱怨SOAPAction标头为空.我想我做对了,但显然我不是.Wireshark显示它没有设置.

@Test
public void testLogin() throws Exception {
    StringBuffer loginXml = new StringBuffer();
    loginXml.append("<soapenv:Envelope xmlns:soapenv=\"http://www.w3.org/2003/05/soap-envelope\" xmlns:ns=\"http://example.com/xyz/2010/08\">");
    loginXml.append("  <soapenv:Header>");
    loginXml.append("    <ns:loginOperationDetails>");
    loginXml.append("    </ns:loginOperationDetails>");
    loginXml.append("  </soapenv:Header>");
    loginXml.append("  <soapenv:Body>");
    loginXml.append("    <ns:LogIn>");
    loginXml.append("      <ns:logInInfo>");
    loginXml.append("        <ns:CustomerAccountId>customer1</ns:CustomerAccountId>");
    loginXml.append("        <ns:Username>JDoe</ns:Username>");
    loginXml.append("        <ns:Password>abc123</ns:Password>");
    loginXml.append("      </ns:logInInfo>");
    loginXml.append("    </ns:LogIn>");
    loginXml.append("  </soapenv:Body>");
    loginXml.append("</soapenv:Envelope>");

    WebServiceTemplate webServiceTemplate = new WebServiceTemplate();
    MessageFactory msgFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
    SaajSoapMessageFactory newSoapMessageFactory = new SaajSoapMessageFactory(msgFactory);
    webServiceTemplate.setMessageFactory(newSoapMessageFactory);

    String uri = "http://xyz.example.com/xyz_1.0/membership.svc/ws";
    webServiceTemplate.setDefaultUri(uri);

    StreamSource source = new StreamSource(new StringReader(loginXml.toString()));
    StreamResult result = new StreamResult(System.out);

    boolean resultReturned = false;
    try { …
Run Code Online (Sandbox Code Playgroud)

soap spring-ws soap-client

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

java.lang.NoClassDefFoundError:javax/xml/soap/SOAPException

我使用Spring创建了一个Web服务.在我的嵌入式tomcat服务器上运行它时工作正常.但是,当我将其打包为JAR文件并使用java -jar命令运行它时,我收到此异常.

我的服务发送一个简单的soap请求,服务器响应是:

 "exception": "java.lang.NoClassDefFoundError",
    "message": "javax/xml/soap/SOAPException",
Run Code Online (Sandbox Code Playgroud)

这是我在邮差中得到的回应.

任何我可以寻找问题的想法.

java xml spring soap spring-ws

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