【问题标题】:Spring, @WebService / @WebMethod, (using Jax-WS), receiving a serialized object?Spring,@WebService / @WebMethod,(使用 Jax-WS),接收序列化对象?
【发布时间】:2011-05-14 19:32:03
【问题描述】:

通过遵循使用 Jax-WS 的教程,我一直在逐渐拼凑如何在 Spring 中接收序列化对象并让 Web 服务正常工作。我已经验证我可以通过浏览器访问此基本服务,方法是使用http://localhost:8080/WebServicesExample/hello?wsdl 之类的 url 拉出 XML 页面

我目前拥有的代码如下,但是我想做一个服务,以便可以传入一个序列化的对象,例如一个 HashMap,然后让 spring 反序列化它等等。我已经做了很多阅读这篇文章但仍然有点迷失,如果有人能提供建议,如何从我目前的位置到我正在尝试做的事情,我将不胜感激。谢谢

import javax.jws.WebMethod;
import javax.jws.WebService;

import com.mkyong.bo.HelloWorldBo;

@WebService
public class HelloWorldWS{

    //DI via Spring
    HelloWorldBo helloWorldBo;

    @WebMethod(exclude=true)
    public void setHelloWorldBo(HelloWorldBo helloWorldBo) {
        this.helloWorldBo = helloWorldBo;
    }

    @WebMethod(operationName="getHelloWorld")
    public String getHelloWorld() {

        return helloWorldBo.getHelloWorld();

    }

}

【问题讨论】:

    标签: java web-services spring serialization jax-ws


    【解决方案1】:

    我不完全确定您使用哪个 WS 堆栈来公开此服务,假设您只想创建一个基于 JAX-WS 的示例,让我指出我之前创建的一个工作示例,可在以下位置获取:@ 987654323@ 。

    此示例使用 Apache CXF 作为 JAX-WS 实现,并使用 JAXB2 进行绑定(将传入的 xml 转换为 Java 对象并返回)

    在您的示例中,Apache CXF 将允许您使用以下类型的 spring 配置文件中的条目来公开 WS 接口:

    <jaxws:endpoint address="/helloworldservice" id="helloworld" implementor="#helloworldBean" >
    </jaxws:endpoint>
    

    【讨论】:

    • 谢谢,好的,我想我应该使用将Java对象转换为XML的过程,我会看一下示例
    • 酷,我在上面找到了你的博客文章并检查了代码,看起来这将是一个很大的帮助,所以据我了解,通过简要查看代码,它是 MemberDetailsRequest (在您的示例中)由服务传入和返回的类
    • 是的 Rick,您应该能够使用 mvn jetty:run 运行示例。运行后,端点将位于 localhost:8080/memberservice-codefirst/webservices/…,服务的 wsdl 位于 localhost:8080/memberservice-codefirst/webservices/…。您可以使用 SOAPUI 之类的工具向其发送请求,该工具可以在给定 wsdl 文件的情况下为您生成示例请求。
    猜你喜欢
    • 1970-01-01
    • 2013-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-29
    相关资源
    最近更新 更多