使用带弹簧的注释来访问webservice

时间:2011-04-21 17:18:31

标签: java web-services spring cxf

我需要使用spring webservice访问JaxWsPortProxyFactoryBean。我可以在上下文xml中连接它并使用它。有没有办法只使用注释使用'webservice'?我正在使用apache cxf和spring mvc 3.

基线是我需要在不使用xml配置的情况下访问Web服务。这可能吗? 我看到了一些注释,如@WebMethod@WebMethod,但我不知道如何正确使用它。

任何人都可以向我指出一个例子。感谢您的帮助。

我的WS网址 - http://localhost:8080/test.asmx/HelloWorld

1 个答案:

答案 0 :(得分:1)

我找到了解决方案。请参考下文。

JaxWsPortProxyFactoryBean jaxWsPortProxyFactoryBean = new JaxWsPortProxyFactoryBean();
String URI = "http://localhost:8080/service";
try {

    jaxWsPortProxyFactoryBean.setWsdlDocumentUrl(new URL(URI+"?wsdl"));
    jaxWsPortProxyFactoryBean.setServiceInterface(myIService.class);
    jaxWsPortProxyFactoryBean.setPortName(PORT);
    jaxWsPortProxyFactoryBean.setNamespaceUri(URI);
    jaxWsPortProxyFactoryBean.setServiceName(SERVICE_NAME);
    logger.debug("WSDL - "+jaxWsPortProxyFactoryBean.getWsdlDocumentUrl());
    jaxWsPortProxyFactoryBean.afterPropertiesSet();

} catch (Exception e) {
    logger.error("Error occured while connecting to the TW web service -",e);
}

请参阅Accessing web services using JAX-WS以获取有关端口和URI的更多信息。

服务接口 -

     public interface testService {
@WebMethod(operationName = "myOperations",  action = "")
@WebResult(name = "errorCode",targetNamespace = "")

public String testWebService(
    @WebParam(name = "studentId", targetNamespace = "", mode = Mode.IN) Integer studentId,
    @WebParam(name = "studenName", targetNamespace = "", mode = Mode.IN) String studenName);
    }

myOperations - 是您需要在webService中访问的操作

errorCode - 是来自webservice的返回值

studentId,studentName - 是您需要发送到网络服务的参数。

我遇到了如何将多个属性映射为webResults的问题。我发布了this问题但仍然没有运气。