Написал «веб-сервис» с мастером Netbeans, работает на Glassfish.Я добавил ссылку, используя wsdl, на мой .NET-клиент, VB, если это имеет какое-то значение.
Я явно не знаю, что происходит, так как я сталкиваюсь с некоторыми кирпичными стенами.Проблема в SoapHeaderException.
System.Web.Services.Protocols.SoapHeaderException: com/mysql/jdbc/Connection
at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(
SoapClientMessage message, WebResponse response, Stream responseStream,
Boolean asyncCall)
at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(
String methodName, Object[] parameters)
at WSClient.WSClient.localhost.DatabaseGateService.createCustomerTable(String xml)
in C:\Project\WSClient\Web References\localhost\Reference.vb:line 40
at WSClient.USAHWSClientConsumer.TestCustomer() in
C:\Project\WSClient\Client\WSConsumer.vb:line 22
Сам веб-сервис прост:
@WebService()
public class DatabaseGate {
private MySQLManagerImp manager;
public DatabaseGate(){
manager = new MySQLManagerImp();
}
@WebMethod(operationName = "createCustomerTable")
public void createCustomerTable(@WebParam(name = "xml") String xml) {
manager.createCustomersTable(xml);
}
}
Требуется строка XML, поскольку я не хотел передавать мерзость аргументов.
Я пытаюсь воспользоваться службой, просто создав экземпляр веб-ссылки:
Dim ws As localhost.DatabaseWS = New localhost.DatabaseWS
// Create the xml string
Dim qbCustomerQueryRS As String = qbQuery.GetCustomerQueryXML()
Dim processedCustomerXML As String =
customerResponseParser.GetAllCustomerDatabaseFriendlyXML(qbCustomerQueryRS)
ws.createCustomerTable(processedCustomerXML)
Я пытался написать строку в мыльном конверте, но все равно получаю то же сообщение.Таким образом, передача строки - это капут, как и должно быть;почему WS знает, что нужно проанализировать строку и просто создать и вызвать метод из объекта, как если бы он был локальным, не работает так, как я думаю.
Что происходит?