Статьи

Может ли клиент JavaFX вызывать веб-службу Java?

Этот совет дня вдохновлен изучением JavaFX Script — часть 3 . В оригинальной статье объясняется, как вызывать веб-службу из клиента JavaFX с использованием NetBeans 5.5.1 и GlassFish v1. Более новая версия как NetBeans, так и GlassFish доступна с момента написания статьи. В этом совете дня объясняется, как вызывать конечную точку Metro, развернутую на GlassFish v2, из клиента JavaFX — все с использованием NetBeans 6 .

  1. После показа экрана # ws7 создайте обычную (без включенной безопасности или надежности) конечную точку Metro, используя NetBeans 6 и GlassFish v2.
  2. В среде IDE NetBeans 6 установите плагин JavaFX, как описано здесь .
  3. Создать клиентскую библиотеку веб-службы. Создание клиента веб-службы в приложении JavaFX Script вызывает исключение NullPointerException ( проблема # 126352 ). Обходной путь, который я использовал, — создать отдельную библиотеку с клиентскими артефактами, а затем включить ее в качестве зависимости в клиентский проект JavaFX.
    • Создайте новый проект типа » Java Class Library«, как показано ниже:

      и нажмите » Finish«.

    • Введите название проекта как « MetroClientLibrary», как показано ниже:

      и нажмите « Finish».

    • Щелкните правой кнопкой мыши по вновь созданному проекту, выберите « New», « Web Service Client...».
    • Нажмите кнопку « Browse...» рядом с переключателем « Project» и выберите развернутый веб-сервис в проекте конечной точки Metro. Если веб-служба развернута на другом компьютере, вы можете указать URL-адрес WSDL. Укажите имя пакета « client», как показано ниже:

      и нажмите « Finish».

    • Как только сгенерированы клиентские артефакты веб-службы (обозначенные расширяемым узлом дерева ссылок на веб-службы ), щелкните правой кнопкой мыши проект и выберите « Build». Это создает файл JAR, который будет использоваться позже. Расположение этого файла JAR отображается в консоли вывода. В нашем случае это так

      C:\workarea\samples\javafx\MetroClientLibrary\dist\MetroClientLibrary.jar.

  4.  

  5. Создать проект JavaFX

    • Создайте новый проект JavaFX, щелкнув правой кнопкой мыши в проводнике проектов, выбрав « New Project» и введя значения, как показано ниже:

    • Нажмите « Next >» и введите значения, как показано ниже:

      и нажмите « Finish».

    • Щелкните правой кнопкой мыши по вновь созданному проекту « Properties», « Libraries», « Add JAR/Folder» и выберите файл JAR, созданный в MetroClientLibraryпроекте « », как показано ниже:

      и нажмите « OK».

      Обратите внимание, Java SE 6 U4 используется для компиляции и запуска этого проекта. Если вы используете более раннюю версию Java SE 6, вам нужно переопределить JAX-WS 2.1 и JAXB 2.1 jar-файлы, используя одобренный механизм, как описано здесь . Классы в этих банках уже включены в Java SE 6 U4.

    • В metroclient.Main.fxфайле замените » // place your code here» следующим кодом:
      import java.lang.*;
      import javafx.ui.*;

      import client.NewWebServiceService;
      import client.NewWebService;

      class InputModel {
      attribute name: String?;
      }
      var inputModel = InputModel { };
      var nameField = TextField { };
      nameField.action = operation() {
      inputModel.name = nameField.value;
      };

      class ButtonClickModel {
      attribute result: String;
      }
      var model = new ButtonClickModel();

      Frame {
      title: "JavaFX Client -> Metro endpoint"
      width: 350
      height: 200
      content: GridPanel {
      rows: 3
      vgap: 5
      cells:
      [SimpleLabel {
      text: "Name : "
      },
      nameField,
      SimpleLabel {
      text: "Result from endpoint : "
      },
      Label {
      text: bind "{model.result}"
      },
      Button {
      text: "Invoke Web Service!"
      action: operation() {
      do {
      try {
      var service: NewWebServiceService = new NewWebServiceService();
      var port: NewWebService = service.getNewWebServicePort();
      var name: String = "{nameField.value}";
      var result: String = port.sayHello(name);
      System.out.println("response: {result}");
      model.result = result;
      } catch (e:Exception) {
      System.out.println("exception: {e}");
      }
      }
      }
      }
      ]
      }
      visible: true
      };
  6. Вызвать клиентский проект JavaFX

    • Щелкните правой кнопкой мыши недавно созданный проект (» MetroClient«) и выберите » Run Project«. Появится следующее окно:

    • Введите » Duke» в текстовое поле и нажмите кнопку » Invoke Web Service!«, чтобы увидеть результат, как показано ниже:

    Выполнив следующие действия, вы создали клиент JavaFX, который может вызывать проект конечной точки Metro, развернутый на GlassFish — все с использованием среды IDE NetBeans.

    Теперь Metro предоставляет безопасный, надежный, транзакционный и совместимый с .NET 3.0 Web-сервис. Вы пробовали / использовали какие-либо из этих функций в Metro?

    Пожалуйста, оставьте предложения на других TOTD, которые вы хотели бы видеть. Полный архив доступен здесь .

    Technorati: totdd JavaFX метро GlassFish NetBeans WebServices