Веб-сервис вызывается с помощью JavaScript - PullRequest
0 голосов
/ 01 ноября 2011

Я сейчас разрабатываю свой первый веб-сервис.

Клиент разработан с использованием JavaScript.

Моя проблема в том, что это не сработало. Я не знаю, в чем моя проблема.

Я думаю, что это ошибка на сайте клиента. Я попробовал это с клиентом Java Web-Service, и там это работает.

Веб-сервис:

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 Ответ

0 голосов
/ 16 февраля 2013

Я довольно новичок в JAX-WS, но думаю, что, возможно, ваша проблема не в клиентской части.Прежде всего, здесь у вас есть пример HelloWorld, который отлично работает, если вы посмотрите на код, то увидите, что в реализации веб-службы аннотация WebService определяется как

@WebService(endpointInterface = "com.mkyong.ws.HelloWorld")

который является полным пакетом вашего "TicketWebService".Другое отличие состоит в том, что в примере определяется интерфейс (помеченный аннотацией @WebService), а затем реализует его, в том числе @WebService в реализации.Я не думаю, что это обязательно, но это хорошая практика для определения интерфейса.

...