Составное приложение для обработки займов предназначено для следующей исходной ситуации, также проиллюстрированной на Рис. 1:
Пользователь подает заявку на заем и указывает такие сведения, как личные данные, запрашиваемая сумма займа и кредитная история.
При получении заявки на заем личные данные, предоставленные пользователем, сверяются с существующей базой данных, и заявка утверждается либо отклоняется на основании полученной информации и запрашиваемой суммы.
После выполнения требуемых формальностей создается отчет в виде письма-подтверждения, которое отправляемого пользователю в подтверждение займа.
Если заем по определенной причине отклоняется, создается и отправляется отчет, указывающий причину отклонения.
Рис. 1: Исходная ситуация обработки займов
Предполагаемая продолжительность: 45 минут
Требования для работы с руководством
Перед началом работы рекомендуется ознакомиться с требованиями в этом разделе.
Предварительные условия
Предполагается, что читатель обладает базовыми знаниями языка и платформы Java и IDE NetBeans или опытом программирования с их использованием:
Программное обеспечение для работы с руководством
Для работы с этим руководством требуется программное обеспечение и ресурсы, перечисленные ниже.
Перед развертыванием приложения необходимо правильно настроить и запустить сервер приложений GlassFish.
В полный пакет загрузки "All" среды NetBeans 6.1 входит сервер приложений GlassFish V2. При установке среды NetBeans 6.1 также устанавливается и GlassFish V2.
Запуск сервера приложений GlassFish:
Если окно "Services" не открыто, выберите "Window > Services".
В диалоговом окне "Services" разверните узел Servers.
В узле Servers должен содержаться подузел GlassFish V2. Если узел сервера приложений GlassFish Application Server отсутствует, перейдите к разделу Настройка сервера приложений GlassFish.
Щелкните правой кнопкой мыши узел "GlassFish V2" и выберите "Start".
В окне "Output" выводится информация протокола по настройке приложения. Если окно "Output" не отображается, выберите "Window > Output > Output".
При появлении в окне "Output" сообщения Application server startup complete сервер приложений можно считать запущенным.
Примечание: Если рядом с узлом сервера приложений GlassFish выводится значок с зеленой стрелкой, сервер запущен.
Это интересно: При развертывании приложения на сервере приложений GlassFish сервер запускается автоматически. Таким образом, запускать сервер приложений вручную не требуется.
Выбор альтернативного сервера приложений:
Ниже приведена процедура настройки IDE NetBeans 6.1 для использования альтернативной версии сервера приложений GlassFish V2. Предполагается, что альтернативная версия сервера приложений загружена и установлена.
В окне "Services" щелкните правой кнопкой мыши узел "Servers" и выберите "Add Server" в контекстном меню.
Откроется диалоговое окно "Add Server Instance".
Выберите из раскрывающегося списка на странице "Choose Server" пункт "GlassFish V2".
Нажмите кнопку "Browse" в поле "Platform Location", затем перейдите к установочному каталогу сервера приложений и выберите его.
Если сервер приложений GlassFish установлен в каталог по умолчанию, место установки можно определить по таблице 1. В противном случае перейдите к местоположению установки сервера приложений GlassFish V2.
Таблица 1: Папка установки сервера приложений по умолчанию
Платформа
Установка от имени...
Установка SOA
Установка пакета средств
ОС Solaris
Linux
root
/opt/SUNWappserver
/opt/SDK
ОС Solaris
Linux
user
~/SUNWappserver
~/SDK
Mac OS X
-
~/SUNWappserver
~/SDK
Windows
-
C:\Sun\AppServer
C:\Sun\SDK
Выберите переключатель "Register Local Default Domain" и нажмите кнопку "Next".
Введите имя пользователя и пароль администратора домена.
Если при установке были приняты стандартные значения, имени пользователя соответствует admin, а паролю – adminadmin.
Нажмите кнопку "Finish".
Создание проекта модуля BPEL
Этот раздел посвящен созданию проекта модуля BPEL под названием LoanRequestor.
Для создания проекта LoanRequestor:
Щелкните File > New Project на панели инструментов NetBeans.
Откроется мастер создания проекта.
Выберите узел SOA в списке "Categories", а затем выберите узел BPEL Module в списке "Projects".
Нажмите кнопку "Next".
Введите LoanRequestor в поле "Project Name".
(Дополнительно) Кнопка "Browse" в поле "Project Location" позволяет выбрать другой каталог сохранения файлов проекта.
Нажмите кнопку "Finish".
В окне "Projects" теперь содержится узел проекта модуля BPEL с названием LoanRequestor.
В этом разделе к проекту модуля BPEL добавляется новый файл схемы XML, а затем к схеме добавляются элементы.
Создание LoanRequestor.xsd:
В окне "Projects" разверните узел проекта LoanRequestor, а затем щелкните правой кнопкой мыши узел Process Files и выберите New > Other.
Откроется мастер создания файла.
Выполните следующие действия в мастере создания файла:
В диалоговом окне "Choose File Type" установите в поле "Category" значение XML, а в поле "File Type" – XML Schema. Нажмите кнопку Next.
Введите LoanRequestor в поле "File Name".
Нажмите кнопку Finish.
В окне "Projects" узел Process Files теперь имеет подузел LoanRequestor.xsd. В редакторе исходного кода содержится вкладка для файла схемы XML LoanRequestor.xsd с открытым режимом просмотра схемы.
Нажмите кнопку "Design" в режиме просмотра схемы для перехода в режим проектирования редактора схемы XML.
Добавление составных типов к схеме XML:
Разверните раздел "XML Schema Components" в палитре режима проектирования и выберите значок составного типа.
Если окно "Palette" не открыто, выберите в главном меню "Window > Palette".
Перетащите выбранный вариант в область проектирования схемы, в узел Complex Types.
При этом добавляется узел Complex Type, а имя составного типа (newComplexType) выделяется и теперь может быть изменено.
Введите processApplicType в новом узле и нажмите клавишу Enter.
Теперь в области проектирования выводится новый составной тип с именем processApplicType.
Повторите действия 1–3 и создайте составной тип с именем processApplicRespType.
Добавление локальных элементов к processApplicType:
В разделе палитры "XML Components" выберите значок элемента и перетащите его в узел processApplicType в области проектирования схемы.
При этом добавляется узел элемента newElement.
Если окно "Properties" не открыто, выберите "Window > Properties".
Выберите узел newElement в области проектирования схемы.
Выберите значение для поля Name в окне "Properties" для получения возможности изменения и введите socialSecurityNumber.
В окне "Properties" установите для свойства Nillable значение True.
В окне "Properties" нажмите кнопку с многоточием рядом со свойством Definition.
Откроется диалоговое окно "Definition".
Повторите действия 1–7 и добавьте следующие элементы:
Name
Nillable
Definition
applicantName
True
string
applicantAddress
True
string
applicantEmailAddress
True
string
applicantAge
True
int
applicantGender
True
string
annualSalary
True
double
amountRequested
True
double
Добавление локального элемента к processApplicRespType:
В разделе палитры "XML Components" выберите значок элемента и перетащите его в узел processApplicRespType в области проектирования схемы.
При этом добавляется узел элемента newElement.
Выберите узел newElement в области проектирования схемы.
Выберите значение для поля Name в окне "Properties" для получения возможности изменения и введите return.
В окне "Properties" нажмите кнопку с многоточием рядом со свойством Definition.
Откроется диалоговое окно "Definition".
Разверните узел списка Built-in Types и выберите узел string.
Нажмите кнопку "OK".
После добавления к составным типам всех локальных элементов окно режима проектирования должно выглядеть следующим образом.
Добавление глобальных элементов:
В разделе палитры "XML Components" выберите значок элемента и перетащите его в узел "Elements" в области "Design".
При этом в область проектирования схемы добавляется элемент newElement под узлами Elements.
Выберите узел newElement в области проектирования схемы в режиме проектирования.
Выберите значение для поля Name в окне "Properties" для получения возможности изменения и введите processApplicElement.
В окне "Properties" нажмите кнопку с многоточием рядом со свойством Definition.
Открывается диалоговое окно определения элемента "Definition".
Разверните узел Complex Types в списке типов и выберите узел составного типа processApplicType.
Нажмите кнопку "OK".
Повторите действия 1–6 и добавьте другой глобальный элемент с именем processApplicRespElement; выберите в качестве определения составной тип processApplicRespType.
Для сохранения изменений выберите узел проекта LoanRequestor в окне "Projects" и выберите "File > Save All" в главном меню.
В этом разделе к проекту модуля BPEL добавляется новый файл WSDL, а затем выполняется настройка элементов документа WSDL.
Создание LoanRequestor.wsdl:
В окне "Projects" разверните узел проекта LoanRequestor, а затем щелкните правой кнопкой мыши узел Process Files и выберите "New > WSDL Document".
Откроется мастер "New WSDL Document".
Выполните следующие действия на странице "Name and Location":
Введите LoanRequestor в поле "File Name".
Установите флажок "Import XML Schema File(s)".
Нажмите кнопку "Browse" в поле "XML Schema(s)".
Откроется диалоговое окно "Add Import". В этом диалоговом окне предлагается выбрать импортируемые схемы XML.
Разверните узел By File > LoanRequestor > Process Files и выберите LoanRequestor.xsd.
Убедитесь в том, что для строки LoanRequestor.xsd установлен флажок в столбце "Import".
Нажмите кнопку "OK".
В мастере "New WSDL Document" нажмите кнопку "Next".
Откроется страница "Abstract Configuration".
Выполните следующие действия в области "Input" страницы "Abstract Configuration":
Дважды щелкните значение по умолчанию в столбце "Message Part Name" для получения возможности изменения значения поля.
Введите requestLoanMessage и нажмите клавишу Enter.
Нажмите кнопку с многоточием в столбце "Element Or Type".
Откроется диалоговое окно "Select Element Or Type".
Разверните By File > LoanRequestor > src/LoanRequestor.xsd > Elements.
Примечание: Для работы с узлом By File в диалоговом окне "Select Element Or Type" может потребоваться прокрутка до начала списка.
Выберите в узле Elements пункт processApplicElement и нажмите кнопку "OK".
Выполните следующие действия в области "Output" страницы "Abstract Configuration":
Дважды щелкните значение по умолчанию в столбце "Message Part Name" для получения возможности изменения значения поля.
Введите responsePart и нажмите клавишу Enter.
Нажмите кнопку с многоточием в столбце "Element Or Type".
Откроется диалоговое окно "Select Element Or Type".
Разверните By File > LoanRequestor > src/LoanRequestor.xsd > Elements.
Примечание: Для работы с узлом By File в диалоговом окне "Select Element Or Type" может потребоваться прокрутка до начала списка.
Выберите processApplicRespElement в узле Elements и нажмите кнопку "OK".
Заполненная страница "Abstract Configuration" должна выглядеть подобно примеру ниже.
Нажмите кнопку "Finish".
В окне "Projects" узел Process Files теперь имеет подузел LoanRequestor.wsdl. В редакторе исходного кода содержится вкладка для файла WSDL LoanRequestor.wsdl с открытым режимом WSDL.
Приложение для обработки займов взаимодействует со своими партнерскими службами через их общедоступные интерфейсы. Эти интерфейсы определены в файлах WSDL отдельных партнерских служб.
Данное руководство посвящено использованию проекта J2EE под названием LoanProcessor. Проект можно создать с нуля, выполнив указания в разделе Создание проект модуля EJB; также можно загрузить сжатые файлы проекта по адресу loanprocessing-loanprocessor.zip. В проект LoanRequestor входит базовая реализация EJB партнерской службы.
Перед тестовым запуском приложения LoanRequestorCompositeApp рассматриваемая партнерская веб-служба должна быть развернута на встроенном сервере приложений GlassFish.
Эта реализация предназначена только для тестирования процесса службы обработки займов "Loan Service".
Открытие проекта LoanProcessor:
Загрузите файл loanprocessing-loanprocessor.zip и извлеките его содержимое в рабочий каталог среды IDE.
При этом создается каталог проекта LoanProcessor.
Выберите в главном меню "File > Open Project".
Откроется мастер открытия проекта.
Перейдите к каталогу, куда был извлечен проект, выберите проект LoanProcessor и щелкните "Open Project Folder".
Откроется диалоговое окно хода выполнения, после чего проект откроется в окне "Projects".
Развертывание проекта LoanProcessor project:
Щелкните правой кнопкой мыши узел проекта LoanProcessor и выберите "Undeploy and Deploy".
Дождитесь появления сообщения BUILD SUCCESSFUL в окне "Output".
Перейдите к окну "Services" для проверки правильности развертывания приложения уровня предприятия LoanProcessor.
В окне "Services" разверните узел Servers > GlassFish V2 > Applications > EJB Modules.
Добавился узел LoanProcessor. Если этот узел не выводится, развертывание завершилось сбоем.
В окне "Projects" разверните узел проекта LoanRequestor, а затем щелкните правой кнопкой мыши узел Process Files и выберите "New > BPEL Process".
Откроется мастер "New BPEL Process".
Введите LoanRequestor в поле "File Name".
Нажмите кнопку "Finish".
В окне "Projects" узел Process Files теперь имеет подузел LoanRequestor.bpel.
В редакторе исходного кода имеется вкладка для процесса BPEL LoanRequestor.bpel с открытым режимом проектирования в BPEL Designer.
Добавление партнерских связей:
В окне "Projects" разверните узел проекта LoanRequestor, а затем разверните узел Process Files и выберите узел LoanRequestor.wsdl.
Перетащите выбранный элемент (LoanRequestor.wsdl) из окна "Projects" в левую часть окна режима проектирования. Возможное место перетаскивания указывается в IDE визуальными подсказками.
В окне "LoanRequestor Properties" измените значение поля "Name" на BpelImplementation.
В остальных полях примите значения по умолчанию ("WSDL File" = /LoanRequestor.wsdl, установлен переключатель "Use Existing Partner Link Type") и нажмите кнопку "OK".
В окне "Projects" разверните узел проекта модуля EJB LoanProcessor, а затем разверните узел Web Services и выберите узел LoanProcessor.
Перетащите выбранный элемент (узел веб-службы LoanProcessor) из окна "Projects" в окно режима проектирования. Возможное место перетаскивания указывается в IDE визуальными подсказками.
Откроется диалоговое окно "Create New Partner Link".
Измените значение в поле "Name" на EjbImplementation.
В остальных полях примите значения по умолчанию ("WSDL File" = /Partners/LoanProcessor/LoanProcessor.wsdl, установлен переключатель "Use a Newly Created Partner Link Type") и нажмите кнопку "OK".
Обратите внимание на то, что в LoanRequestor > Process Files добавлена папка Partners.
Разверните узел Partners.
Обратите внимание на то, что в этой папке содержится узел LoanProcessor, имеющий в своем составе LoanProcessor.wsdl, LoanProcessorWrapper.wsdl и LoanProcessor_xsd_1.xsd.
Добавление действия получения:
В разделе "Web Service" окна "Palette" выберите значок "Receive" и перетащите его в область проектирования между действиями "Process Start" и "Process End".
Возможное место перетаскивания указывается в IDE визуальными подсказками.
В результате в режиме проектирования размещается действие получения с именем Receive1.
Щелкните действие Edit button for the Receive1 .
Откроется редактор свойств "Receive1 [Receive] Property Editor".
Измените значение в поле "Name" на ReceiveFromCustomer.
Выберите "BpelImplementation" из раскрывающегося списка "Partner Link".
В поле "Operation" заносится значение LoanRequestorOperation.
Нажмите кнопку "Create" рядом с полем "Input Variable", примите значения по умолчанию в диалоговом окне "New Input Variable" и нажмите кнопку "OK".
При этом создается новая входная переменная с именем LoanRequestorOperationIn.
Для закрытия окна "Receive1 [Receive] – Property Editor" нажмите кнопку "OK".
Действие получения теперь обозначается в режиме проектирования как ReceiveFromCustomer, а между партнерской связью BpelImplementation и действием получения в процессе LoanRequestor имеется соединительная линия.
Добавление действия вызова:
В разделе "Web Service" окна "Palette" выберите значок "Invoke" и перетащите его в область "Design" под действие ReceiveFromCustomer.
Возможное место перетаскивания указывается в IDE визуальными подсказками.
В результате в режиме проектирования размещается действие вызова с именем Invoke1.
Щелкните действие Edit button for the<Invoke1.
Откроется редактор свойств "Invoke1 [Invoke] – Property Editor".
Измените значение в поле "Name" на InvokeLoanProcessorEJB.
Выберите "EjbImplementation" из раскрывающегося списка "Partner Link".
В поле "Operation" заносится значение processApplicOperation.
Нажмите кнопку "Create" рядом с полем "Input Variable", примите значения по умолчанию в диалоговом окне "New Input Variable" и нажмите кнопку "OK".
При этом создается новая входная переменная с именем ProcessApplicOperationIn.
Нажмите кнопку "Create" рядом с полем "Output Variable", примите значения по умолчанию в диалоговом окне "New Output Variable" и нажмите кнопку "OK".
При этом создается новая входная переменная с именем ProcessApplicOperationOut.
Закройте окно "Invoke1 [Invoke] – Property Editor" путем нажатия кнопки "OK".
Действие вызова в режиме проектирования теперь называется InvokeLoanProcessorEJB, и между действием вызова в процессе LoanRequestor и партнерской связью EjbImplementation имеется соединительная линия.
Добавление действия ответа:
В разделе "Web Service" окна "Palette" выберите значок "Reply" и перетащите его в область проектирования под действие InvokeLoanProcessorEJB.
Возможное место перетаскивания указывается в IDE визуальными подсказками.
В результате в режиме проектирования размещается действие ответа с именем Reply1.
Щелкните действие Edit button for theReply1.
Открывается редактор свойств "Reply1 [Reply] - Property Editor".
Измените значение в поле "Name" на ReplyToCustomer.
Выберите "BpelImplementation" из раскрывающегося списка "Partner Link".
В поле "Operation" заносится значение LoanRequestorOperation.
Убедитесь в том, что выбран переключатель "Normal Response".
Нажмите кнопку "Create" рядом с полем "Output Variable", примите значения по умолчанию в диалоговом окне "New Output Variable" и нажмите кнопку "OK".
При этом создается новая выходная переменная с именем LoanRequestorOperationOut.
Нажмите кнопку "OK" для закрытия окна "Reply1 [Reply] - Property Editor".
Действие ответа в режиме проектирования теперь называется ReplyToCustomer.
Добавление действия присвоения CopyCustomerInfo:
В разделе "Basic Activities" окна "Palette" выберите значок "Assign" и перетащите его в область проектирования между действиями ReceiveFromCustomer и InvokeLoanProcessorEJB.
Возможное место перетаскивания указывается в IDE визуальными подсказками.
В результате в режиме проектирования размещается действие присвоения с именем Assign1.
Если окно "Properties" не открыто, выберите в главном меню "Window > Properties".
В режиме проектирования щелкните действие Assign1.
В окне "Properties" измените значение свойства Name на CopyCustomerInfo.
Нажмите кнопку "Mapper" в редакторе BPEL для открытия окна BPEL Mapper. Убедитесь в том, что выбрана вкладка "LoanRequestor.bpel".
Разверните узлы Variables > LoanRequestorOperationIn > requestLoanMessage на (левой) исходной панели окна BPEL Mapper.
Для каждого локального элемента составного типа processApplicType в схеме, созданной ранее, отображается узел.
Разверните узлы ProcessApplicOperationIn и parameters в узле Variables на (правой) панели назначения окна BPEL Mapper.
Те же элементы схемы выводятся в виде узлов под узлом parameters.
Перетащите socialSecurityNumber из исходной панели в узел socialSecurityNumber на целевой панели.
Повторите действие 8 для следующих переменных: applicantName, applicantAddress, applicantEmailAddress, applicantAge, applicantGender, annualSalary и amountRequested.
Для сохранения изменений выберите узел проекта LoanRequestor в окне "Projects" и выберите "File > Save All" в главном меню.
Добавление активного присвоения CopyLoanStatus:
На панели инструментов редактора BPEL выберите Design для перехода к режиму проектирования.
В разделе "Basic Activities" окна "Palette" выберите значок "Assign" и перетащите его в область "Design" между действиями InvokeLoanProcessorEJB и ReplyToCustomer.
В результате в режиме проектирования размещается действие присвоения с именем Assign1.
Выберите действие Assign1.
В окне "Properties" установите для свойства Name значение CopyLoanStatus.
На панели инструментов редактора BPEL выберите Mapper для перехода к окну BPEL Mapper.
На исходной панели BPEL Mapper разверните узлы Variables > ProcessApplicOperationOut > parameters.
Под узлом parameters появляется узел return.
Разверните узлы Variables > LoanRequestorOperationOut > responsePart на целевой панели окна BPEL Mapper.
Под узлом responsePart появляется узел return.
Перетащите return из исходной панели в узел return на целевой панели окна BPEL Mapper.
Для сохранения изменений выберите узел проекта LoanRequestor в окне "Projects" и выберите "File > Save All" в главном меню.
В окне "Projects" щелкните правой кнопкой мыши проект LoanRequestor и выберите "Clean and Build Project".
Если в окне "Output" появляется сообщение BUILD SUCCESSFUL, то развертывание прошло успешно.
Перед развертыванием проекта модуля BPEL необходимо создать составное приложение. При развертывании проекта сборка служб становится доступной серверу приложений, в результате чего становится возможным запуск служебных модулей.
Создание проекта составного приложения:
Выберите в главном меню "File > New Project".
Откроется мастер создания проекта.
В списке "Categories" выберите узел SOA.
В списке "Projects" выберите узел Composite Application.
Нажмите кнопку "Next".
Введите LoanRequestorCompositeApp в поле "Project Name".
Нажмите кнопку "Finish".
В окне "Projects" теперь содержится узел проекта для проекта составного приложения с именем LoanRequestorCompositeApp.
Использование редактора составного приложения (сборки служб)
В этом разделе выполняется изменение настроек проекта и сборка проекта модуля BPEL с помощью редактора составного приложения (сборки служб). Добавляется конечная точка WSDL и соединение, а затем проверяются и изменяются свойства автоматически созданных конечных точек WSDL.
Изменение настроек проекта и сборка проекта модуля BPEL с помощью редактора составного приложения (сборки служб):
В окне "Projects" разверните узел проекта LoanRequestorCompositeApp. Щелкните правой кнопкой мыши узел "Service Assembly" и выберите в раскрывающемся меню "Edit".
В редакторе CASA откроется файл .casa. Область "Design" режима проектирования в редакторе состоит из трех частей: "WSDL Ports", "JBI Modules" и "External Modules".
Примечание: Для вызова редактора CASA в среде NetBeans 6.0 необходимо щелкнуть правой кнопкой мыши составное приложение в окне "Projects" и выбрать Edit Application Configuration.
В окне "Projects" выберите узел проекта LoanRequestor и перетащите его в область "JBI Modules" в режиме проектирования файла LoanRequestorCompositeApp.casa.
Для сборки проекта модуля BPEL LoanRequestor нажмите кнопку "Build Project" на панели инструментов редактора.
После этого выполните следующие действия:
В окне "Output" содержится отчет "BUILD SUCCESSFUL".
Окно режима проектирования для файла LoanRequestorCompositeApp.casa должно выглядеть следующим образом:
Создание конечной точки WSDL:
Выберите значок "soap" в разделе палитры "WSDL Bindings".
Перетащите выбранный элемент в область "WSDL Ports" в режиме проектирования для файла LoanRequestorCompositeApp.casa.
При этом добавляется порт WSDL casaPort1.
Создание соединения:
Щелкните значок потребляющей конечной точки в порте casaPort1 в режиме проектирования.
Перетащите выбранный элемент в LoanRequestorPortTypeRole_myRole в рамку (BPEL)LoanRequestor в области "JBI Modules".
В результате создается новое соединение.
Развертывание и тестирование составного приложения
Проект составного приложения можно усовершенствовать путем добавления тестов, с последующим связыванием с операцией, передачей входных данных и применением тестера.
Развертывание составного приложения:
Щелкните правой кнопкой мыши узел проекта LoanRequestorCompositeApp и выберите "Deploy Project".
Если в окне "Output" появляется сообщение BUILD SUCCESSFUL, то развертывание прошло успешно.
Добавление теста для утвержденного запроса:
В окне "Projects" разверните узел проекта LoanRequestorCompositeApp, а затем щелкните правой кнопкой мыши узел Test и выберите в контекстном меню "New Test Case".
Откроется мастер "New Test Case".
В поле "Test Case Name" введите ApprovedTestCase и нажмите кнопку "Next".
Разверните узел LoanRequestorCompositeApp - Process Files на странице "Select the WSDL Document", выберите LoanRequestorCompositeApp.wsdl и нажмите кнопку "Next".
Выберите LoanRequestorOperation на странице "Select the Operation to Test" и нажмите кнопку "Finish".
В окне "Projects" добавлен новый узел под узлом Test – ApprovedTestCase. В узле имеются два подузла: Input и Output. В редакторе исходного кода содержится вкладка для входного файла Input.xml.
Примечание: Если в редакторе исходного кода отсутствует вкладка для Input.xml, откройте файл двойным щелчком по узлу Input в окне "Projects".
Определите значения переменных на вкладке редактора исходного кода для файла Input.xml путем ввода следующих значений в местах, отмеченных вопросительными знаками:
<loan:socialSecurityNumber>111-11-1111</loan:socialSecurityNumber>
<loan:applicantName>May JavaOne</loan:applicantName>
<loan:applicantAddress>1601 Willow Road, Menlo Park, CA 94025</loan:applicantAddress>
<loan:applicantEmailAddress></loan:applicantEmailAddress>
<loan:applicantAge>36</loan:applicantAge>
<loan:applicantGender>female</loan:applicantGender>
<loan:annualSalary>100000</loan:annualSalary>
<loan:amountRequested>1000000</loan:amountRequested>
Выберите в главном меню "File > Save All".
Перейдите к вкладке редактора исходного кода для Input.xml.
Добавление теста для отклоненного запроса:
В окне "Projects" разверните узел проекта LoanRequestorCompositeApp, а затем щелкните правой кнопкой мыши узел Test и выберите в контекстном меню "New Test Case".
Откроется мастер "New Test Case".
В поле "Test Case Name" введите RejectedTestCase и нажмите кнопку "Next".
Разверните узел LoanRequestorCompositeApp - Process Files на странице "Select the WSDL Document", выберите LoanRequestorCompositeApp.wsdl и нажмите кнопку "Next".
Выберите LoanRequestorOperation на странице "Select the Operation to Test" и нажмите кнопку "Finish".
В окне "Projects" добавлен новый узел под узлом Test – RejectedTestCase. В узле имеются два подузла: Input и Output. В редакторе исходного кода содержится вкладка для входного файла Input.xml.
Примечание: Если в редакторе исходного кода отсутствует вкладка для Input.xml, откройте файл двойным щелчком по узлу Input в окне "Projects".
Определите значения переменных на вкладке редактора исходного кода для файла Input.xml путем ввода следующих значений в местах, отмеченных вопросительными знаками:
Перейдите к вкладке редактора исходного кода для Input.xml.
Заполнение тестового файла базовыми данными для ApprovedTestCase:
В окне "Projects" дважды щелкните узел Output в ApprovedTestCase и ознакомьтесь с содержимым файла.
Следует отметить, что изначально файл Output.xml пуст.
В окне "Projects" щелкните правой кнопкой мыши узел ApprovedTestCase и выберите "Run" в контекстном меню.
Примечание: Первое выполнение – особый случай, поскольку файл Output.xml пуст, и сравнение результатов тестирования с содержимым файла Output.xml невозможно. Обратите внимание на сообщение о сбое в окне "Output".
Открывается диалоговое окно "Overwrite Empty Output?".
Нажмите кнопку "Yes".
Файл Output.xml заполняется стандартной информацией. В этой версии файла теперь содержатся базовые данные, которые будут использоваться в последующих тестах. Эта версия файла также называется "золотым" файлом.
Заполнение тестового файла базовыми данными для RejectedTestCase:
В окне "Projects" дважды щелкните узел Output в RejectedTestCase и ознакомьтесь с содержимым файла.
Следует отметить, что изначально файл Output.xml пуст.
В окне "Projects" щелкните правой кнопкой мыши узел RejectedTestCase и выберите "Run" в контекстном меню.
Примечание: Первый прогон – особый случай, поскольку файл Output.xml пуст, и сравнение результатов тестирования с содержимым файла Output.xml невозможно. Обратите внимание на сообщение о сбое в окне "Output".
Открывается диалоговое окно "Overwrite Empty Output?".
Нажмите кнопку "Yes".
Файл Output.xml заполняется стандартной информацией. В этой версии файла теперь содержатся базовые данные, которые будут использоваться в последующих тестах.
Выполнение тестов:
В окне "Projects" щелкните правой кнопкой мыши узел ApprovedTestCase и выберите "Run" в контекстном меню.
Следует отметить, что содержимое файла Output.xml сохраняется и не перезаписывается новым результатом. Для просмотра результатов дважды щелкните узел, соответствующий пройденному тесту (непосредственно под узлом Output).
В окне "Projects" щелкните правой кнопкой мыши узел RejectedTestCase и выберите "Run" в контекстном меню.
Для просмотра результатов дважды щелкните узел, соответствующий пройденному тесту.
Закройте все документы в редакторе исходного кода.
Данное руководство посвящено использованию проекта J2EE под названием LoanProcessor. Проект можно создать с нуля, выполнив указания в этом разделе; также можно загрузить сжатые файлы проекта по адресу loanprocessing-loanprocessor.zip.
Создание проекта модуля EJB:
Выберите в главном меню "File > New Project".
Выберите узел Enterprise в списке "Categories", а затем выберите узел EJB Module в списке "Projects".
Нажмите кнопку "Next".
Введите LoanProcessor в поле "Project Name".
(Дополнительно) Кнопка "Browse" в поле "Project Location" позволяет выбрать другой каталог сохранения файлов проекта EJB.
Нажмите кнопку Next.
Убедитесь в том, что на странице "Server and Settings" выбран сервер "GlassFish V2", и нажмите кнопку Finish.
В окне "Projects" теперь содержится узел проекта модуля EJB с названием LoanProcessor.
Создание веб-службы:
В окне "Projects" щелкните правой кнопкой мыши узел проекта LoanProcessor и выберите "New > Web Service" в контекстном меню.
Откроется мастер "New Web Service".
Выполните следующие действия в мастере "New Web Service":
На панели "Name and Location" введите LoanProcessor в поле "Web Service Name".
Введите com.sun.loanprocessor в поле "Package".
Нажмите кнопку "Finish".
В результате создается веб-служба, и LoanProcessor открывается в редакторе исходного кода.
В окне "Projects" разверните узел проекта LoanProcessor, а затем разверните узел Web Services.
Щелкните правой кнопкой мыши узел LoanProcessor (веб-служба) и выберите "Add Operation".
Откроется диалоговое окно "Add Operation".
В поле "Name" введите processApplicOperation.
На вкладке "Parameters" добавьте следующие семь параметров путем нажатия кнопки "Add" и заполнения строки, добавляемой средой IDE для каждого параметра.
Name
Type
socialSecurityNumber
java.lang.String
applicantName
java.lang.String
applicantAddress
java.lang.String
applicantEmailAddress
java.lang.String
applicantAge
java.lang.Integer
applicantGender
java.lang.String
annualSalary
java.lang.Double
amountRequested
java.lang.Double
Нажмите кнопку OK.
Нажмите кнопку "Source" в редакторе исходного кода для перехода в режим "Source" для файла LoanProcessor.java.
Следует отметить, что документ LoanProcessor.java обновлен, и в него добавлен скелет метода processApplicOperation.
Замените в редакторе исходного кода
//TODO write your implementation code here:
return null;
на следующий код:
int MINIMUM_AGE_LIMIT = 18;
int MAXIMUM_AGE_LIMIT = 65;
double MINIMUM_SALARY = 20000;
int AVERAGE_LIFE_EXPECTANCY = 70;
String result = "Loan Application APPROVED.";
// Проверка возраста подающего заявку
// Если возраст меньше минимального, заявка отклоняется
if(applicantAge < MINIMUM_AGE_LIMIT) {
result = "Loan Application REJECTED - Reason: Under-aged " +
applicantAge +
". Age needs to be over " +
MINIMUM_AGE_LIMIT +
" years to qualify.";
System.out.println(result);
return result;
}
// Проверка возраста подающего заявку
// Если возраст превышает максимальный, заявка отклоняется
if(applicantAge > MAXIMUM_AGE_LIMIT) {
result = "Loan Application REJECTED - Reason: Over-aged " +
applicantAge +
". Age needs to be under " +
MAXIMUM_AGE_LIMIT +
" years to qualify.";
System.out.println(result);
return result;
}
// Проверка годовой зарплаты
// Если зарплата меньше минимальной, заявка отклоняется
if(annualSalary < MINIMUM_SALARY) {
result = "Loan Application REJECTED - Reason: Annual Salary $" +
annualSalary +
" too low. Annual Salary needs to be over $" +
MINIMUM_SALARY +
" to qualify.";
System.out.println(result);
return result;
}
// Расчет срока выплаты займа из значения параметра "applicantAge"
int yearsToRepay = AVERAGE_LIFE_EXPECTANCY - applicantAge;
// Расчет максимальной суммы займа на основании периода выплаты займа
double limit = annualSalary * yearsToRepay * 0.5;
// Проверка запрашиваемой суммы; если превышен лимит, заявка отклоняется
if(amountRequested > limit) {
result = "Loan Application REJECTED - Reason: You are asking for too much $" +
amountRequested +
". Annual Salary $" +
annualSalary +
", Age " +
applicantAge +
" years. Your limit is $" +
limit;
System.out.println(result);
return result;
}
System.out.println(result);
return result;
Для сохранения изменений выберите "File > Save" в главном меню.
(Дополнительно) Закройте вкладку LoanProcessor в редакторе исходного кода.
Оставить комментарии и предложения, обратиться за поддержкой и получить информацию о последних достижениях в области функциональных возможностей разработки для J2EE с помощью IDE NetBeans можно через рассылку
.