javax.ws почему клиент и сервер находятся в одном пакете - PullRequest
0 голосов
/ 09 января 2020

Я изучаю веб-сервис от "Роджерс Каденхед: Самс учит себя 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);
}

, так почему же клиент должен импортировать класс с сервера? и как импортировать класс с сервера, так как сервер находится на удаленном компьютере?

Я правильно понял пример? Или я что-то упустил?

...