#java #javascript #web-services #jax-ws
#java #javascript #веб-службы #jax-ws
Вопрос:
На данный момент я разрабатываю свой первый веб-сервис.
Клиент разработан с использованием JavaScript.
Моя проблема в том, что это не сработало. Я не знаю, в чем моя проблема.
Я думаю, что это ошибка на клиентском сайте. Я попробовал это с клиентом веб-службы Java, и там это работает.
Веб-сервис:
import javax.jws.*;
import javax.jws.soap.SOAPBinding;
@WebService(name="TicketWebService", targetNamespace = "http://my.org/ns/")
@SOAPBinding(style = SOAPBinding.Style.RPC)
public class TicketWebService {
@WebMethod(operationName="getContact")
public String getContact()
{
return "Hallo Hans!!!";
}
}
Опубликовать на сервере:
import javax.swing.JOptionPane;
import javax.xml.ws.Endpoint;
public class PublishWsOnServer
{
public static void main( String[] args )
{
Endpoint endpoint = Endpoint.publish( "http://localhost:8080/services",
new TicketWebService() );
JOptionPane.showMessageDialog( null, "Server beenden" );
endpoint.stop();
}
}
Клиент:
<html>
<head>
<title>Client</title>
<script language="JavaScript">
function HelloTo()
{
var endpoint = "http://localhost:8080/services";
var soapaction = "http://localhost:8080/services/getContact";
xmlHttp = getXMLHttp();
xmlHttp.open('POST', endpoint, true);
xmlHttp.setRequestHeader('Content-Type', 'text/xml;charset=utf-8');
xmlHttp.setRequestHeader('SOAPAction', soapaction);
xmlHttp.onreadystatechange = function() {
alert(xmlHttp.responseXML);
}
xmlHttp.send(request);
}
</script>
</head>
<body onLoad="HelloTo()" id="service">
Body in Client
</body>
</html>
Предупреждение не работает…
Комментарии:
1. Вы знаете, доходит ли запрос до клиента? Создайте некоторый образец вывода в службе, например System.out.println.
2. спасибо за ваш ответ… Я пишу system.out.println в методе GetContact() Где должен находиться вывод? Я нигде этого не нашел…
3. Вывод должен быть доступен в консоли, с которой вы запускаете свой веб-сервис Java (метод main[]).
4. хорошо… в консоли веб-службы нет вывода… У вас есть идея?
Ответ №1:
Я довольно новичок в JAX-WS, но я думаю, что, возможно, ваша проблема не на стороне клиента. Прежде всего, здесь у вас есть пример HelloWorld, который отлично работает, если вы заглянете в код, вы увидите, что в реализации веб-службы веб-сервис аннотаций определяется как
@WebService(endpointInterface = "com.mkyong.ws.HelloWorld")
это полный пакет вашего «TicketWebService». Другое отличие заключается в том, что пример определяет интерфейс (помеченный аннотацией @WebService ), а затем реализует его, включая @WebService также в реализацию. Я не думаю, что это обязательно, но это хорошая практика для определения интерфейса.