Руководство системного программиста » История » Редакция 57
« Предыдущее |
Редакция 57/58
(Разница(diff))
| Следующее »
Rustam Usmanov, 09.09.2016 08:58
Руководство системного програмиста¶
- Содержание
- Руководство системного програмиста
Аннотация¶
В данном документе приведены общие сведения о программе "Web-сервисы Руслан", ее структура. Описаны порядок настройки и проверки программы, дополнительные возможности.
Глава 1. Общие сведения о программе¶
Программа "Web-сервисы Руслан" предназначена для обеспечения простого и удобного доступа удалённых пользователей к ресурсам АБИС "Руслан". Удалёнными пользователями могут являться любые пользователи сервера приложений WildFly, на базе которого функционирует программа. Ресурсами АБИС "Руслан" являются БД, поддерживаемые сервером "Руслан" и записи, содержащиеся в этих базах данных. Доступ к ресурсам заключается в выполнении над ними следующих операций:- Поиск (по протоколу SRU 2.0)
- Извлечение, модификация, создание, удаление (по протоколу WebDAV)
- Заказ услуги (бронирование, копия) по найденному библиографическому описанию (по протоколу NCIP v. 2.0.2)
Операции, связанные с чтением данных с ограниченным доступом и записью данных, требуют наличия соответствующих прав у пользователя, а следовательно и идентификации пользователя. Идентификация пользователя осуществляется при помощи провайдера идентификации по протоколу SAML 2.0.
Взаимодействие с сервером "Руслан" осуществляется по протоколу Z39.50.
Ресурсы представляются в двух форматах: XML и JSON, в зависимости от предпочтений пользователя.
Программа может функционировать на любых технических средствах под управлением сервера приложений WildFly 8.2.*. После установки сервера WildFly необходимо убедиться в том, что установленный статический модуль *PicketLink* имеет версию *2.7.0.Final*. При необходимости следует обновить этот модуль.
Обязательным требованием для выполнения программы является возможность сетевого взаимодействия с сервером "Руслан" и с сервером Oracle, используемым АБИС "Руслан".
Глава 2. Структура программы¶
Программа "Web-сервисы Руслан" состоит из следующих компонентов:
jrzs-ear*.ear
- Z39.50-клиент, реализованный в виде EJB.ridp*.war
- провайдер идентификации.rrs-web*.war
- Web-интерфейс ресурсов АБИС "Руслан"
Глава 3. Настройка программы¶
3.1. Установка программы¶
Установка программы заключается в развёртывании компонентов программы на сервере приложений WildFly.
3.2. Настройка программы¶
3.2.1. Настройка сервера приложений WildFly¶
3.2.1.1. Настройка источников данных¶
Все источники данных Oracle, используемые сервером Руслан, должны быть включены в конфигурацию сервера приложений WildFly. Следует обратить внимание на то, что настройка источников данных предусматривает установку JDBC драйвера Oracle. Пример результата настройки источников данных, отражённого в конфигурационном файле сервера приложений WildFly, приведён в Приложении 1.
3.2.1.2 Настройка доменов безопасности¶
В подсистему безопасности сервера приложений WildFly необходимо добавить два домена безопасности с именами idp
и sp
. Первый используется провайдером идентификации, второй - Web-интерфейсом ресурсов АБИС "Руслан".
Аутентификацию в домене безопасности idp
необходимо настроить с использованием модуля входа Z39.50 (класс com.ols.auth.Z3950LoginModule
). Этот модуль позволяет осуществлять аутентификацию любых пользователей АБИС "Руслан". В Таблице 3-1 представлены параметры модуля входа Z39.50, их назначение и примеры значений. При необходимости осуществления аутентификации на нескольких серверах Руслан, в конфигурацию домена безопасности можно включить несколько экземпляров модуля входа Z39.50 с различными параметрами.
Параметр | Назначение | Значение |
---|---|---|
orgId | Уникальный идентификатор организации. Рекомендуется использовать национальный код библиотеки. Значение этого параметра должно совпадать со значением параметра Org899 сервера "Руслан" |
19013582 |
zHost | Адрес сервера Z39.50. Значение этого параметра должно совпадать со значением параметра Host сервера "Руслан". |
testbed.ruslan.ru |
zPort | Порт сервера Z39.50. Значение этого параметра должно совпадать со значением параметра Port сервера "Руслан". |
210 |
zClientBinding | JNDI-имя Z39.50-клиента, реализованного в виде EJB. | java:global/jrzs/jrzs-ejb/ZClient |
debug | Управление выводом отладочных сообщений в журнал. | true false |
Аутентификацию в домене безопасности sp
необходимо настроить с использованием модуля входа SAML2 (класс org.picketlink.identity.federation.bindings.wildfly.SAML2LoginModule
).
Пример результата настройки доменов безопасности, отражённого в конфигурационном файле сервера приложений WildFly, приведён в Приложении 1.
3.2.2. Настройка провайдера идентификации¶
Настройка провайдера идентификации заключается в редактировании конфигурационного файла WEB-INF/picketlink.xml, включённого в ridp*.war
. Как минимум, необходимо указать значения параметров PicketLinkIDP/IdentityURL
и PicketLinkIDP/Trust/Domains
, зависящие от конкретных условий эксплуатации. В первом из них необходимо указать адрес провайдера идентификации (например, https://host.domain/ridp/
). Во втором - список доменов, разделённых запятой, с которыми установлены доверительные отношения (например, domain1,domain2
).
3.2.3. Настройка Web-интерфейса ресурсов АБИС "Руслан"¶
3.2.3.1 Настройка провайдера услуг¶
Web-интерфейс ресурсов АБИС "Руслан" является реализацией провайдера услуг. Для успешного взаимодействия с провайдером идентификации требуется его настройка, которая заключается в редактировании конфигурационного файла WEB-INF/picketlink.xml, включённого в rrs-web*.war
. Как минимум, необходимо указать значения параметров PicketLinkSP/IdentityURL
и PicketLinkSP/ServiceURL
, зависящие от конкретных условий эксплуатации. В первом из них необходимо указать адрес провайдера идентификации (например, https://host.domain/ridp/
). Во втором - адрес провайдера услуг (например, https://host.domain/rrs-web/
).
3.2.3.2 Настройка хранения данных¶
Настройка хранения данных заключается в редактировании дескриптора хранения данных WEB-INF/classes/META-INF/persistence.xml, включённого в rrs-web*.war
. В этом дескрипторе необходимо определить модули хранения данных (persistence-unit), связав их с ранее определёнными источниками данных. Пример дескриптора хранения данных приведён в Приложении 1.
3.2.3.3 Общая настройка¶
Общая настройка заключается в редактировании дескриптора развёртывания приложения WEB-INF/web.xml, включённого вrrs-web*.war
. В этом дескрипторе необходимо определить контексты хранения данных (persistence-context-ref), связав их с ранее определёнными модулями хранения данных (persistence-unit). Контексты хранения данных должны быть поименованы (элемент persistence-context-ref-name
) следующим образом (с указанием национального кода библиотеки вместо orgId
):
- Контекст, связанный через соответствующий модуль хранения данных с управляющим источником данных АБИС "Руслан", должен иметь имя
persistence/orgId.Server
; - Контекст, связанный через соответствующий модуль хранения данных с источником библиотечных данных АБИС "Руслан", должен иметь имя
persistence/orgId.DbMetadata
.
Пример определения контекстов хранения данных приведён в Приложении 1.
3.2.3.4 Настройка АБИС "Руслан"¶
Настройка АБИС "Руслан" заключается в присвоении значений параметрам сервера "Руслан":- Host - имя узла с экземпляром АБИС "Руслан", по которому Web-интерфейс ресурсов АБИС "Руслан" сможет связываться с сервером Руслан;
- Org899 - национальный код библиотеки, используемый в определениях контекстов хранения данных.
Перечень сокращений¶
EJB | Enterprise JavaBeans |
JNDI | Java Naming and Directory Interface |
JSON | JavaScript Object Notation |
NISO | National Information Standards Organization |
NCIP | NISO Circulation Interchange Protocol |
XML | The Extensible Markup Language |
АБИС | Автоматизированная библиотечно-информационная система |
БД | База данных |
Приложение 1. Конфигурационный файл сервера приложений WildFly¶
Источники данных¶
<subsystem xmlns="urn:jboss:domain:datasources:2.0">
<datasources>
<datasource jta="false" jndi-name="java:jboss/datasources/ruslan" pool-name="ruslan" enabled="true" use-ccm="false">
<connection-url>jdbc:oracle:thin:@oracle.test.org:1521/ORA11</connection-url>
<driver-class>oracle.jdbc.OracleDriver</driver-class>
<driver>ojdbc6.jar</driver>
<security>
<user-name>libmgr</user-name>
<password>libmgr_pwd</password>
</security>
<validation>
<validate-on-match>false</validate-on-match>
<background-validation>false</background-validation>
</validation>
<statement>
<share-prepared-statements>false</share-prepared-statements>
</statement>
</datasource>
<datasource jta="false" jndi-name="java:jboss/datasources/lib1" pool-name="lib1" enabled="true" use-ccm="false">
<connection-url>jdbc:oracle:thin:@oracle.test.org:1521/ORA11</connection-url>
<driver-class>oracle.jdbc.OracleDriver</driver-class>
<new-connection-sql>alter session set current_schema=lib1</new-connection-sql>
<driver>ojdbc6.jar</driver>
<security>
<user-name>lib1</user-name>
<password>lib1_pwd</password>
</security>
<validation>
<validate-on-match>false</validate-on-match>
<background-validation>false</background-validation>
</validation>
<statement>
<share-prepared-statements>false</share-prepared-statements>
</statement>
</datasource>
</datasources>
</subsystem>
Домены безопасности¶
<subsystem xmlns="urn:jboss:domain:security:1.2">
<security-domains>
<security-domain name="idp" cache-type="default">
<authentication>
<login-module code="com.ols.auth.Z3950LoginModule" flag="required">
<module-option name="orgId" value="1"/>
<module-option name="zHost" value="testbed.ruslan.ru"/>
<module-option name="zPort" value="210"/>
<module-option name="zClientBinding" value="java:global/jrzs/jrzs-ejb/ZClient"/>
<module-option name="debug" value="false"/>
</login-module>
</authentication>
</security-domain>
<security-domain name="sp" cache-type="default">
<authentication>
<login-module code="org.picketlink.identity.federation.bindings.wildfly.SAML2LoginModule" flag="required"/>
</authentication>
</security-domain>
</security-domains>
</subsystem>
Дескриптор хранения данных¶
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="ruslan-database">
<jta-data-source>java:jboss/datasources/lib1</jta-data-source>
<class>com.ols.ruslan.persistence.database.Zdbi</class>
</persistence-unit>
<persistence-unit name="ruslan-server">
<jta-data-source>java:jboss/datasources/ruslan</jta-data-source>
<class>com.ols.ruslan.persistence.server.Apoint</class>
<class>com.ols.ruslan.persistence.server.Lusr</class>
<class>com.ols.ruslan.persistence.server.Zacl</class>
<class>com.ols.ruslan.persistence.server.Zparam</class>
</persistence-unit>
</persistence>
Контексты хранения данных в дескрипторе развёртывания¶
<persistence-context-ref>
<persistence-context-ref-name>persistence/1.Server</persistence-context-ref-name>
<persistence-unit-name>ruslan-server</persistence-unit-name>
</persistence-context-ref>
<persistence-context-ref>
<persistence-context-ref-name>persistence/1.DbMetadata</persistence-context-ref-name>
<persistence-unit-name>ruslan-database</persistence-unit-name>
</persistence-context-ref>
Обновлено Rustam Usmanov около 8 лет назад · 57 изменени(я, ий)