Руководство системного программиста » История » Редакция 35
Редакция 34 (Rustam Usmanov, 16.02.2016 15:54) → Редакция 35/58 (Rustam Usmanov, 16.02.2016 15:56)
h1. Руководство системного програмиста
{{toc}}
h2. Аннотация
В данном документе приведены общие сведения о программе "Web-сервисы Руслан", ее структура. Описаны порядок настройки и проверки программы, дополнительные возможности.
h2. Глава 1. Общие сведения о программе
Программа "Web-сервисы Руслан" предназначена для обеспечения простого и удобного доступа удалённых пользователей к ресурсам АБИС "Руслан". Удалёнными пользователями могут являться любые пользователи сервера приложений "WildFly":http://wildfly.org, на базе которого функционирует программа. Ресурсами АБИС "Руслан" являются БД, поддерживаемые сервером "Руслан" и записи, содержащиеся в этих базах данных. Доступ к ресурсам заключается в выполнении над ними следующих операций:
* Поиск (по протоколу "SRU 2.0":http://www.loc.gov/standards/sru/sru-2-0.html)
* Извлечение, модификация, создание, удаление (по протоколу "WebDAV":http://tools.ietf.org/html/rfc4918)
* Заказ услуги (бронирование, копия) по найденному библиографическому описанию (по протоколу "NCIP v. 2.0.2":http://www.ncip.info/)
Операции, связанные с чтением данных с ограниченным доступом и записью данных, требуют наличия соответствующих прав у пользователя, а следовательно и идентификации пользователя. Идентификация пользователя осуществляется при помощи провайдера идентификации по протоколу SAML 2.0.
Взаимодействие с сервером "Руслан" осуществляется по протоколу Z39.50.
Ресурсы представляются в двух форматах: XML и JSON, в зависимости от предпочтений пользователя.
Программа может функционировать на любых технических средствах под управлением сервера приложений *WildFly 8.**. Обязательным требованием для выполнения программы является возможность сетевого взаимодействия с сервером "Руслан" и с сервером *Oracle*, используемым АБИС "Руслан".
h2. Глава 2. Структура программы
Программа "Web-сервисы Руслан" состоит из следующих компонентов:
# @jrzs-ear*.ear@ - Z39.50-клиент, реализованный в виде EJB.
# @ridp*.war@ - провайдер идентификации.
# @rrs-web*.war@ - Web-интерфейс ресурсов АБИС "Руслан"
h2. Глава 3. Настройка программы
h3. 3.1. Установка программы
Установка программы заключается в "развёртывании компонентов программы на сервере приложений WildFly":https://docs.jboss.org/author/display/WFLY8/Application+deployment.
h3. 3.2. Настройка программы
h4. 3.2.1. Настройка сервера приложений WildFly
h5. 3.2.1.1. Настройка источников данных
Все источники данных Oracle, используемые сервером Руслан, должны быть "включены в конфигурацию сервера приложений WildFly":https://docs.jboss.org/author/display/WFLY8/DataSource+configuration. Следует обратить внимание на то, что настройка источников данных предусматривает "установку":https://docs.jboss.org/author/display/WFLY8/Application+deployment "JDBC драйвера Oracle":http://www.oracle.com/technetwork/database/features/jdbc/index-091264.html. Пример результата настройки источников данных, отражённого в конфигурационном файле сервера приложений WildFly, приведён в [[Руководство системного програмиста#Источники данных|Приложении 1]].
h5. 3.2.1.2 Настройка доменов безопасности
В "подсистему безопасности сервера приложений WildFly":https://docs.jboss.org/author/display/WFLY8/Security+subsystem+configuration необходимо "добавить два домена безопасности":https://docs.jboss.org/author/display/WFLY8/Security+subsystem+configuration#Securitysubsystemconfiguration-securitydomains с именами @idp@ и @sp@. Первый используется провайдером идентификации, второй - Web-интерфейсом ресурсов АБИС "Руслан".
Аутентификацию в домене безопасности @idp@ необходимо настроить с использованием модуля входа Z39.50 (класс @com.ols.auth.Z3950LoginModule@). В Таблице 3-1 представлены параметры модуля входа Z39.50, их назначение и примеры значений.
Таблица 3-1. Параметры модуля входя 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@|
Пример результата настройки доменов безопасности, отражённого в конфигурационном файле сервера приложений WildFly, приведён в [[Руководство системного програмиста#Домены безопасности|Приложении 1]].
h2. Перечень сокращений
table{border:none}.
|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|
|АБИС|Автоматизированная библиотечно-информационная система|
|БД|База данных|
h2. Приложение 1. Конфигурационный файл сервера приложений WildFly
h3. Источники данных
<pre><code class="xml">
<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>
</code></pre>
h3. Домены безопасности
<pre><code class="xml">
<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>
</code></pre>