我正在使用Jax-ws(或JAXB,不确定)熟悉Java中的Web服务。
我创建了一个带有单个Web服务的小项目。该Web服务只有一个名为transfer的端点,并返回继承ITransferResult接口的对象。
Web服务合同
//Service Endpoint Interface
@WebService
@SOAPBinding(style = Style.RPC)
public interface IBankWebSrv {
@WebMethod
ITransferResult transfer(String accountNumber, double amount);
}
Web服务实现
//Service Implementation
@WebService(endpointInterface = "Contracts.IBankWebSrv")
public class BankWebSrv implements IBankWebSrv {
@Override
public ITransferResult transfer(String accountNumber, double amount) {
ITransferResult result = new TransferResult();
// TODO logic here
result.setSuccessful(true);
return result;
}
}
转移结果合约
@XmlJavaTypeAdapter(TransferResult.class)
public interface ITransferResult {
boolean isSuccessful();
void setSuccessful(boolean successful);
}
TransferResult实现
public class TransferResult extends XmlAdapter<TransferResult, ITransferResult>
implements ITransferResult {
@XmlElement
boolean successful;
public boolean isSuccessful() {
return this.successful;
}
public void setSuccessful(boolean successful) {
this.successful = successful;
}
@Override
public TransferResult marshal(ITransferResult v) throws Exception {
return (TransferResult) v;
}
@Override
public ITransferResult unmarshal(TransferResult v) throws Exception {
return (ITransferResult) v;
}
}
当我发布我的Web服务时,出现以下错误:
我已经在SO上查找了答案,并应用了最常见的提示,但其中没有任何一种对我起作用。异常线程 "main" javax.xml.ws.WebServiceException: 无法创建JAXBContext......
原因是:java.security.PrivilegedActionException: com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 1 种IllegalAnnotationExceptionsITransferResult是一个接口,而JAXB无法处理接口。此问题与以下位置有关:在ITransferResult处。
我缺少什么?