Вызов веб-службы с помощью JavaScript

#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 также в реализацию. Я не думаю, что это обязательно, но это хорошая практика для определения интерфейса.