Главная » Delphi » Добавление в проект Web службы клиентского кода CORBA

0

Чтобы добавить клиентские файлы CORBA в проект Web сервера, выполните сле

дующие действия:

Скопируйте файлы *_i.pas и *_c.pas из каталога клиентского приложения EJB, разработанного в предыдущем разделе. Файл  интерфейса  представлен в листинге 19.16.

Листинг 19.16. Файл интерфейса SOAP

{Модуль объявления общедоступных интерфейсов для IHelloWorldSoap}

unit HelloWorldSoapIntf;

interface uses

Types, XSBuiltIns;

type

IHelloWorldSoap = interface(IInvokable)

[‘{CA738F7B-B111-4F12-BEBD-C2ADDD80C3E2}’]

// Здесь при помощи обычного кода на языке Object Pascal

// объявляются вызываемые методы. Не забудьте соглашение о

// вызовах! (используйте stdcall). Например:

// function Add(const First, Second: double): double; stdcall;

// function Subtract(const First, Second: double): double;// stdcall;

// function Multiply(const First, Second: double): double;

//                                                     stdcall;

// function Divide(const First, Second: double): double;

//                                                     stdcall;

function sayHello: String; stdcall;

end;

implementation uses

InvokeRegistry;

initialization

InvRegistry.RegisterInterface(TypeInfo(IHelloWorldSoap),

”, ”);

end.2.  Добавьте две открытые переменные в раздел  public класса Form1, как это по казано  в листинге 19.17. В связи с тем, что эти переменные открытые, они будут доступны всем остальным модулям приложения.

3.  Добавьте в модуль главной формы метод  OnCreate(). Его реализация должна выглядеть согласно коду листинга 19.17.

4.  Наконец,  внесите  изменения  в  метод   sayHello() в  файле  HelloWorld- SoapImpl.pas согласно листингу 19.18.

5.  Сохраните проект и откомпилируйте сервер.

6.  Перед запуском  клиента  убедитесь   в  том,  что  запущены  OSAgent   и  Borland AppServer. В приложении после  щелчка  на кнопке Say Hello появится надпись “Hello, world”.

Этот  достаточно простой пример демонстрирует процесс применения EJB в кли ентских приложениях SOAP, что  открывает новые  возможности использования при ложений на платформе J2EE, а также других типов приложений Delphi.

Листинг 19.17. Класс главной формы сервера SOAP

unit ServerMain;

interface uses

SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Corba,

HelloHome_helloworld_i, HelloHome_helloworld_c;

type

TForm1 = class(TForm)

procedure FormCreate(Sender: TObject);

private

{ Закрытые объявления }

public

myHome:          HelloHome;

myRemote: Hello;

end;

var

Form1: TForm1;

implementation uses ComApp;

{$R *.DFM}

const

CLASS_ComWebApp: TGUID = ‘{63859D3A-005F-43BB-8E64-85A466D9C364}';

procedure TForm1.FormCreate(Sender: TObject);

begin

CorbaInitialize;

myHome        := THelloHomeHelper.bind;

myRemote := myHome._create;

end;

initialization

TWebAppAutoObjectFactory.Create(Class_ComWebApp,

‘coHelloWorld’, ‘coHelloWorld Object’);

end.

Листинг 19.18. Класс реализации сервера SOAP

{ Модуль объявления общедоступных интерфейсов для IHelloWorldSoap,

реализующий IHelloWorldSoap }

unit HelloWorldSoapImpl;

interface uses

HelloWorldSoapIntf, InvokeRegistry, ServerMain;

type

THelloWorldSoap = class(TInvokableClass, IHelloWorldSoap)

// Удостоверьтесь, что в интерфейсе IHelloWorldSoap

// реализованы все вызываемые методы. Затем сохраните этот

// файл и, нажав комбинацию клавиш <Ctrl+Space>, вызовите

// CodeInsight(tm) для заполнения этого раздела реализации.

// Отметьте все объявления интерфейсов для IHelloWorldSoap и

// нажмите клавишу <Enter>. После вставки объявлений вызовите

// ClassCompletion(tm), нажав комбинацию клавиш// <Ctrl+Shift+C>, и создайте заглушки реализации. function sayHello : String; stdcall;

end;

implementation

{ THelloWorldSoap }

function THelloWorldSoap.sayHello: String;

begin

//     result := ‘Hello, world'; // проверка клиента SOAP

result := ServerMain.Form1.myRemote.sayHello;

end;

initialization

InvRegistry.RegisterInvokableClass(THelloWorldSoap);

end.

Резюме

В настоящей главе  содержится введение в  разработку  приложений  CORBA  на Delphi. Вначале  рассматривались основы архитектуры CORBA,  а также  была  проде монстрирована разработка достаточно простого приложения Bank. Затем  рассматри вались более сложные структуры данных.

Затем  обсуждались  вопросы разработки приложений масштаба  предприятия и изучался  процесс создания EJB средствами JBuilder 5, установки его на сервере при ложений Borland и подключения к нему клиента CORBA, разработанного в Delphi.

И,  наконец, этот  EJB был расширен за счет  объединения средств  CORBA и Web служб при  помощи протокола SOAP. Такой  подход  позволяет клиентам, использую щим протокол SOAP, обращаться к любому EJB через Web службы.  Причем клиенту вовсе  не обязательно заботиться об установке CORBA на сервере. Это открывает но вые возможности для модернизации устаревших корпоративных приложений.

Источник: Тейксейра, Стив, Пачеко, Ксавье.   Borland Delphi 6. Руководство разработчика. : Пер.  с англ. — М. : Издательский дом “Вильямс”, 2002. —  1120 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии