Я изучаю веб-сервис от "Роджерс Каденхед: Самс учит себя Java за 24 часа (7-е издание)", глава 22.
Это смущает меня, так как клиент должен быть в одной упаковке с сервером для создания экземпляра класса делегата сервера предоставляется Interface
.
package com.java24hours.ws;
import java.net.*;
import javax.xml.namespace.*;
import javax.xml.ws.*;
public class SquareRootClient {
public static void main(String[] arguments) throws Exception {
URL url = new URL("http://127.0.0.1:5335/service?wsdl");
QName qname = new QName(
"http://ws.java24hours.com/",
"SquareRootServerImplService"
);
Service service = Service.create(url, qname);
SquareRootServer srs = service.getPort(SquareRootServer.class);
...
}
, что трудно понять. на мой взгляд, поскольку webservice является протоколом RP C, клиент и сервер не будут находиться в одном и том же месте, что означает, что сервер находится на удаленном компьютере.
так почему клиент и сервер находятся в одном пакете?
Я гуглил, ничего не нашел по этому вопросу. Я продолжаю искать, нашел другой пример в Oracle Документах .
В этом примере клиент и сервер не находятся в одном пакете, потому что он не использует getPort()
метод I предположим, но клиент действительно импортирует класс сервера.
import helloservice.endpoint.HelloService;
import helloservice.endpoint.Hello;
public class HelloClient {
@WebServiceRef(wsdlLocation="http://localhost:8080/helloservice/hello?wsdl")
static HelloService service;
...
Hello port = service.getHelloPort();
...
String response = port.sayHello(name);
}
, так почему же клиент должен импортировать класс с сервера? и как импортировать класс с сервера, так как сервер находится на удаленном компьютере?
Я правильно понял пример? Или я что-то упустил?