如何将 wsgen 工具用于 SOAP/JMS Web 服务
How to use wsgen tool for SOAP/JMS Web Services
我正在按照教程 [here] 在 RAD 中创建 Web 服务应用程序。但是,当我尝试在 EchoSOAPImpl.java:
中添加新函数时
@WebMethod
public String getInput(String input) {
return "Your input is: " + input;
}
然后使用wsgen生成必要的java文件:
wsgen -s ejbModule -cp build\classes -d build com.ibm.was.wssample.sei.echo.EchoSOAPImpl
,失败并显示此错误消息:
error: Could not create declaration for annotation type javax.ejb.Stateless
我尝试删除注释,但是整个项目显示错误:
An EJB module must contain one or more enterprise beans.m
我对在 RAD 中构建 Web 服务感到非常沮丧。提供的教程或学习资料很少。还请提供有关 RAD 中 Web 服务的任何其他有用材料。
EchoSOAPImpl.java
package com.ibm.was.wssample.sei.echo;
@javax.ejb.Stateless
@javax.jws.WebService(endpointInterface = "com.ibm.was.wssample.sei.echo.EchoServicePortType", targetNamespace = "http://com/ibm/was/wssample/sei/echo/", serviceName = "EchoService", portName = "EchoServicePort")
public class EchoSOAPImpl implements EchoServicePortType {
@Override
public EchoStringResponse echoOperation(EchoStringInput parameter) {
...
return response;
}
@Override
public String getInput(String input) {
return "Your input is: " + input;
}
}
EchoServicePortType
@WebService(name = "EchoServicePortType", targetNamespace = "http://com/ibm/was/wssample/sei/echo/")
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
@XmlSeeAlso( { ObjectFactory.class })
public interface EchoServicePortType {
@WebMethod(action = "echoOperation")
@WebResult(name = "echoStringResponse", targetNamespace = "http://com/ibm/was/wssample/sei/echo/", partName = "parameter")
public EchoStringResponse echoOperation(
@WebParam(name = "echoStringInput", targetNamespace = "http://com/ibm/was/wssample/sei/echo/", partName = "parameter") EchoStringInput parameter);
@WebMethod(action = "getInput")
@WebResult(name = "getInputResponse", targetNamespace = "http://com/ibm/was/wssample/sei/echo/", partName = "parameter")
public String getInput(@WebParam(name = "getInputInput", targetNamespace = "http://com/ibm/was/wssample/sei/echo/", partName = "parameter") String getInput);
}
这似乎是 wsgen
中的错误。我建议您在 wsgen
类路径中添加包含 @Stateless 的 IBM EJB API jar,例如:
wsgen -s ejbModule -cp {ibm javaeJB jar}:build\classes -d build com.ibm.was.wssample.sei.echo.EchoSOAPImpl
这是假设您在使用 RAD 的同时也在使用 Websphere。如果不添加标准 Java EE jar。
您需要将 Java EE API jar 添加到类路径中,如下所示:
wsgen -wsdl -cp .;javaee-api-6.0.jar com.vvirlan.MyWsEjb
我正在按照教程 [here] 在 RAD 中创建 Web 服务应用程序。但是,当我尝试在 EchoSOAPImpl.java:
中添加新函数时@WebMethod
public String getInput(String input) {
return "Your input is: " + input;
}
然后使用wsgen生成必要的java文件:
wsgen -s ejbModule -cp build\classes -d build com.ibm.was.wssample.sei.echo.EchoSOAPImpl
,失败并显示此错误消息:
error: Could not create declaration for annotation type javax.ejb.Stateless
我尝试删除注释,但是整个项目显示错误:
An EJB module must contain one or more enterprise beans.m
我对在 RAD 中构建 Web 服务感到非常沮丧。提供的教程或学习资料很少。还请提供有关 RAD 中 Web 服务的任何其他有用材料。
EchoSOAPImpl.java
package com.ibm.was.wssample.sei.echo;
@javax.ejb.Stateless
@javax.jws.WebService(endpointInterface = "com.ibm.was.wssample.sei.echo.EchoServicePortType", targetNamespace = "http://com/ibm/was/wssample/sei/echo/", serviceName = "EchoService", portName = "EchoServicePort")
public class EchoSOAPImpl implements EchoServicePortType {
@Override
public EchoStringResponse echoOperation(EchoStringInput parameter) {
...
return response;
}
@Override
public String getInput(String input) {
return "Your input is: " + input;
}
}
EchoServicePortType
@WebService(name = "EchoServicePortType", targetNamespace = "http://com/ibm/was/wssample/sei/echo/")
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
@XmlSeeAlso( { ObjectFactory.class })
public interface EchoServicePortType {
@WebMethod(action = "echoOperation")
@WebResult(name = "echoStringResponse", targetNamespace = "http://com/ibm/was/wssample/sei/echo/", partName = "parameter")
public EchoStringResponse echoOperation(
@WebParam(name = "echoStringInput", targetNamespace = "http://com/ibm/was/wssample/sei/echo/", partName = "parameter") EchoStringInput parameter);
@WebMethod(action = "getInput")
@WebResult(name = "getInputResponse", targetNamespace = "http://com/ibm/was/wssample/sei/echo/", partName = "parameter")
public String getInput(@WebParam(name = "getInputInput", targetNamespace = "http://com/ibm/was/wssample/sei/echo/", partName = "parameter") String getInput);
}
这似乎是 wsgen
中的错误。我建议您在 wsgen
类路径中添加包含 @Stateless 的 IBM EJB API jar,例如:
wsgen -s ejbModule -cp {ibm javaeJB jar}:build\classes -d build com.ibm.was.wssample.sei.echo.EchoSOAPImpl
这是假设您在使用 RAD 的同时也在使用 Websphere。如果不添加标准 Java EE jar。
您需要将 Java EE API jar 添加到类路径中,如下所示:
wsgen -wsdl -cp .;javaee-api-6.0.jar com.vvirlan.MyWsEjb