我正在按照教程 [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服务的任何其他有用的资料。
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);
}
答案 0 :(得分:2)
这似乎是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。
答案 1 :(得分:0)
您需要将Java EE API jar添加到类路径中,如下所示:
wsgen -wsdl -cp .;javaee-api-6.0.jar com.vvirlan.MyWsEjb