发现Java模型和WSDL模型之间存在Soap不匹配
我正在用Java开发SOAP服务,但遇到以下错误:发现Java模型和WSDL模型之间存在Soap不匹配,java,web-services,soap,wsdl,Java,Web Services,Soap,Wsdl,我正在用Java开发SOAP服务,但遇到以下错误: WARNING: Mismatch between Java model and WSDL model found, For wsdl operation {http://database.unitn.it/}isLoginOkay,There is no matching wsdl fault with detail QName {http://interfaces.database.unitn.it/}Exception com.sun
WARNING: Mismatch between Java model and WSDL model found, For wsdl operation
{http://database.unitn.it/}isLoginOkay,There is no matching wsdl fault with detail
QName {http://interfaces.database.unitn.it/}Exception
com.sun.xml.internal.ws.spi.db.DatabindingException: Unknown JAXBContext
implementation: class com.sun.xml.bind.v2.runtime.JAXBContextImpl
at com.sun.xml.internal.ws.spi.db.BindingContextFactory.getJAXBFactory(BindingContextFactory.j
ava:192)
at com.sun.xml.internal.ws.spi.db.BindingContextFactory.create(BindingContextFactory.java:134)
at com.sun.xml.internal.ws.message.jaxb.JAXBMessage.create(JAXBMessage.java:152)
at com.sun.xml.internal.ws.fault.SOAPFaultBuilder.createSOAPFaultMessage(SOAPFaultBuilder.java:241)
at com.sun.xml.internal.ws.fault.SOAPFaultBuilder.createSOAPFaultMessage(SOAPFaultBuilder.java:224)
at com.sun.xml.internal.ws.wsdl.PayloadQNameBasedOperationFinder.getWSDLOperationMapping(PayloadQNameBasedOperationFinder.java:143)
at com.sun.xml.internal.ws.wsdl.OperationDispatcher.getWSDLOperationMapping(OperationDispatcher.java:82)
at com.sun.xml.internal.ws.api.message.Packet.getWSDLOperationMapping(Packet.java:285)
at com.sun.xml.internal.ws.api.message.Message.getOperation(Message.java:284)
at com.sun.xml.internal.ws.api.message.Message.getOperation(Message.java:302)
at com.sun.xml.internal.ws.api.message.Message.isOneWay(Message.java:379)
...
我正在使用Java1.8,所有东西都在本地主机上运行。这台机器运转良好。
我不知道问题出在哪里。我尝试了很多方法来解决这个问题,但是我没有四个没有一个线程来讨论这个问题。
请帮忙
编辑:
以下是出版商:
private static final String mUrl = "http://localhost:" + Ports.MASTER_DATABASE_SERVICE + "/database";
public static void launch() throws Exception
{
System.out.println("----Starting on ..." + mUrl);
Endpoint.publish(mUrl, new Database());
System.out.println("----SOAP Service started!!!!");
}
这里是客户端部分的接口:
@WebService
@SOAPBinding(style = Style.RPC)
public interface DatabaseAPIsInterface
{
@WebMethod
public User isLoginOkay(String password, String email) throws Exception;
}
String mUrl = "http://localhost:" + Ports.MASTER_DATABASE_SERVICE + "/database?wsdl";
URL url = new URL(mUrl);
QName qname = new QName("http://database.unitn.it/", "DatabaseService");
Service service = Service.create(url, qname);
DatabaseInterface database = service.getPort(new QName("http://database.unitn.it/", "DatabasePort"), DatabaseAPIsInterface.class);
User user = database.isLoginOkay(password, email);
System.out.println(user);
这里是该方法的实现isLoginOkay
myMethod的throws子句是否与.wsdl文档中相应的中指定的错误完全匹配?此外,您可能希望坚持使用Java 1.7,直到1.8已经过测试版,并且在首次公开发布后至少有一次小版本更新,除非您确实需要1.8语言功能。您是否可以将您的发布者类从wsdl的实现和服务部分粘贴到此处。如果可能,我希望使用Java 1.8。还有一件事,我在这里用IntelliJIEACheck来回答:
String mUrl = "http://localhost:" + Ports.MASTER_DATABASE_SERVICE + "/database?wsdl";
URL url = new URL(mUrl);
QName qname = new QName("http://database.unitn.it/", "DatabaseService");
Service service = Service.create(url, qname);
DatabaseInterface database = service.getPort(new QName("http://database.unitn.it/", "DatabasePort"), DatabaseAPIsInterface.class);
User user = database.isLoginOkay(password, email);
System.out.println(user);