Миграция OpenMRS на систему DB2 и сервер приложений WebSphere

OpenMRS® представляет собой коллективный проект с открытым исходным кодом, направленный на разработку программного обеспечения в целях поддержки медицинского обслуживания в развивающихся странах. Узнайте о том, как осуществить миграцию OpenMRS на систему управления базами данных IBM® DB2® и сервер приложений IBM WebSphere®. В этой статье рассказывается, как подготовить базу данных, импортировать исходный код и модифицировать проект под сервер приложений WebSphere.

Тянь Тянь Гао, инженер-программист, IBM

Photo of Tian GaoТянь Тянь Гао (Tian Tian Gao) работает инженером-программистом в китайском институте перспективных технологий при лаборатории IBM China Development Laboratory (CDL) IBM. В настоящее время она занимается разработкой стандартов и работой, связанной со сферой здравоохранения.



30.10.2012

Введение

Медицинская информационная система с открытым исходным кодом (Open Medical Record System, сокращенно OpenMRS), созданная в 2004 году, представляет собой коллективный проект с открытым исходным кодом, направленный на разработку программного обеспечения в целях поддержки медицинского обслуживания в развивающихся странах. Это Web-приложение позволяет разрабатывать специализированные системы медицинской документации, даже не имея навыков в области программирования. Тем не менее при этом требуются знания медицины и системного анализа. OpenMRS предоставляет возможность добавления и замены пакетных модулей. Кроме того, эта система обладает гибкими возможностями модификации в соответствии с требованиями заказчика. Проект OpenMRS опирается на платформы Apache Tomcat и MySQL.

Из этой статьи вы узнаете, как осуществить миграцию OpenMRS на СУБД IBM DB2 и сервер приложений IBM WebSphere. Руководствуясь пошаговыми инструкциями, вы сможете перейти с MySQL на DB2 и импортировать проект в свою среду разработки. Вы также научитесь вносить необходимые изменения в проект для перехода на СУБД DB2 и сервер приложений WebSphere, а затем развертывать файл EAR.

Необходимые предварительные условия

Данная статья применима к следующим версиям продуктов:

  • DB2 версии 9.7
  • Сервер приложений WebSphere версии 7.0.0.17
  • OpenMRS версии 1.7.2.

Часть информации, приведенной в данной статье, может оказаться неприменимой к более поздним версиям указанных продуктов.

В статье предполагается, что ваша система OpenMRS развернута на платформах MySQL и Tomcat. Информацию по развертыванию можно получить по ссылке Установка OpenMRS.


Перенос базы данных из MySQL в DB2

Часто используемые сокращения

  • EAR: архивный файл Enterprise
  • J2EE: платформа Java™ 2, версия Enterprise Edition
  • JAR: архивный файл Java
  • JDBC: Java-интерфейс для работы с базами данных
  • JRE: среда исполнения Java
  • JSP: серверные страницы Java
  • XML: расширяемый язык разметки

Первой задачей является подготовка базы данных. Перед началом миграции выполните следующие действия.

  1. Текущий пользователь должен иметь полномочия DB2AMNS для базы данных DB2. Чтобы получить такие полномочия, можно выполнить следующий сценарий для добавления текущего пользователя в группу администраторов DB2.

    net localgroup DB2ADMNS %username% /add
    net localgroup DB2USERS %username% /add

  2. Создайте базу данных DB2 с именем Openmrs и убедитесь в том, что текущий пользователь имеет права доступа к этой базе данных. Для этого щелкните правой кнопкой мыши на базе данных Openmrs в Центре управления DB2, чтобы просмотреть полномочия пользователя, как показано на рисунке 1.
    Рисунок 1. Права доступа пользователя к базе данных
  3. Подготовьте JAR-файлы JDBC-драйверов MySQL и DB2. JAR-файлы драйверов находятся в каталоге установки вашей базы данных.
    • Для MySQL файл драйвера, скорее всего, будет называться mysql-connector-java-5.1.7-bin.jar
    • Для DB2 будут доступны два JAR-файла: db2jcc.jar и db2jcc_license_cu.jar
  4. Убедитесь в том, что версия JDBC-драйвера DB2 выше, чем 3.0. Проверить номер версии можно путем выполнения команды java com.ibm.db2.jcc.DB2Jcc -version. Образец результата данной команды показан на рисунке 2.
    Рисунок 2. Версия драйвера JDBC

Для использования OpenMRS необходимо иметь базу данных на платформе MySQL. Для достижения целей миграции требуется какое-либо инструментальное средство переноса данных. При выполнении задач по переносу данных вам может помочь инструментальное средство IBM Data Movement Tool. (Ссылки на дополнительную информацию об этом инструментальном средстве см. в разделе Ресурсы.)

Чтобы перенести демонстрационные данные OpenMRS из MySQL в DB2, выполните следующие действия:

  1. Откройте пользовательский интерфейс инструментального средства IBM Data Movement Tool, показанный на рисунке 3.
  2. В разделе Source Database (исходная база данных) выберите MySQL и введите информацию о параметрах исходной базы данных, исходя из своих настроек.
  3. Выберите драйверы JDBC, установку в моей среде (in my environment), MySQL версии 5.0 и драйвер JDBC mysql-connector-java-5.1.7-bin.jar.

    Щелкните Connect to MySQL (подключиться к MySQL), чтобы проверить, работает ли подключение. После этого выберите базу данных openmrs.

  4. Введите свойства базы данных DB2.
  5. Выберите драйверы JDBC для DB2. JAR-файлы драйверов можно найти в каталоге установки DB2 (например, C:\Program Files\IBM\SQLLIB\java\).

    Вам будут нужны два JAR-файла: db2jcc.jar и db2jcc_license_cu.jar (JAR-файл лицензии).

Рисунок 3. Конфигурирование параметров перемещения данных

(Просмотреть увеличенный вариант рисунка 3.)

Щелкните Connect to DB2 (подключиться к DB2), чтобы проверить, работает ли подключение. Если вы увидите экземпляр на своей рабочей станции, это значит, что можно продолжать перемещение данных. Щелкнув Extract DDL/Data (извлечь DDL/данные) на вкладке View File (просмотр файла), вы увидите информационные сообщения инструментального средства, как показано на рисунке 4.

Рисунок 4. Извлечение DDL и данных

Найдите файл с именем db2gen.cmd в подкаталоге выходных данных каталога установки вашего инструментального средства. Теперь можно приступать к извлечению сценариев для развертывания базы данных. Щелкните Deploy DDL/Data (выполнить развертывание DDL/данных). Консоль должна выглядеть примерно так, как показано на рисунке 5. Сравните сведения о количестве строк, чтобы проверить, все ли данные были корректно обработаны.

Рисунок 5. Развертывание объектов данных

Вы также можете изменить параметры переноса путем изменения значений в файле IBMExtract.properties, который находится в корневом каталоге инструментального средства IBM Data Movement Tool.


Импорт проекта в среду разработки

Для миграции OpenMRS на систему DB2 и сервер приложений WebSphere требуются внести некоторые изменения в программный код. Первым шагом является импорт исходного кода в вашу среду разработки. Данная среда разработки должна поддерживать возможность разработки проектов Java EE. Хорошим выбором является среда Eclipse. Загрузите исходный код OpenMRS. (Для подготовки этой статьи использовалась версия 1.7.2.)

Убедитесь в том, что ваша версия JRE выше 1.4. Чтобы проверить версию JRE, выполните команду java -version, как показано на рисунке 6.

Рисунок 6. Проверка версии JRE

Модификация проекта под сервер приложений WebSphere

Чтобы программный код мог выполняться на сервере приложений WebSphere, необходимо создать проект в виде файла EAR и развернуть данный EAR-файл на сервере приложений WebSphere.

Добавление файла развертывания

Чтобы проект можно было включить в файл EAR, добавьте в него файл развертывания J2EE application.xml.

В каталоге метаданных создайте папку с именем META-INF, содержащую файл application.xml, который будет дескриптором развертывания при развертывании файла EAR на сервере приложений WebSphere. Он «сообщает» серверу приложений WebSphere Web-модуль приложения и его корневой контекст. Содержание данного XML-файла показано в листинге 1.

Листинг 1. Файл XML
<?xml version="1.0" encoding="UTF-8"?>
<application id="Application_ID" version="1.4" xmlns="http://java.sun.com/xml/ns/j2ee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
 http://java.sun.com/xml/ns/j2ee/application_1_4.xsd">
	<display-name>openmrsEAR</display-name>
	<module>
		<web>
			<web-uri>openmrs.war</web-uri>
			<context-root>openmrs</context-root>
		</web>
	</module>
</application>

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

Рисунок 7. Импорт проекта в среду Eclipse

Изменение конфигурации параметров JSP

Проект включает сервлет с именем jsp, сконфигурированный в файле web.xml, как показано в листинге 2.

Листинг 2. Сервлет jsp
<servlet-mapping>
		<servlet-name>jsp</servlet-name>
		<url-pattern>*.withjstl</url-pattern>
</servlet-mapping>

Данный сервлет jsp будет обрабатывать запрос URL-адреса с суффиксом withjstl. Но как он устроен? В Tomcat сервлет jsp сконфигурирован в файле web.xml, который находится в каталоге tomcat-root/conf/, как показано в листинге 3.

Листинг 3. Сервлет jsp в файле web.xml
        <servlet-name>jsp</servlet-name>
        <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>

Здесь важно то, что запрос withjstl будет обрабатываться классом JspServlet, определяемым в ядре механизма Jasper в Tomcat. А что если у вас нет такого класса на сервере приложений WebSphere и как в таком случае может приложение управлять данным Web-запросом? Для решения проблемы можно добавить конфигурацию в файл web.xml проекта.

  1. Откройте файл web.xml и найдите в нем элемент <jsp-config>.
  2. Как показано в листинге 4, добавьте элемент <jsp-property-group> в качестве дочернего объекта внутри элемента <jsp-config>.
    Листинг 4. <jsp-property-group>
    <jsp-property-group>
    <url-pattern>*.withjstl</url-pattern>
    </jsp-property-group>

Группа параметров JSP определяется путем присвоения данной группе имени и указания шаблонов URL-адресов. При добавлении указанного элемента шаблоны URL-адресов будут обрабатываться как файл JSP, если какой-либо ресурс соответствует запросу withjstl.


Модификация проекта под DB2

Как мы видели в папке src, исходный код имеет две дочерние папки: api и web. Во время развертывания классы в папке api будут сжиматься в JAR-файл с именем openmrs-api-version.subversion-.jar. Чтобы перенести этот проект в базу данных DB2, необходим JDBC-коннектор для DB2.

Добавление JDBC-драйвера для DB2

Чтобы включить в проект JDBC-драйвер для DB2, выполните следующие действия.

  1. Создайте новую подпапку с именем db2 в папке проекта lib.
  2. Скопируйте JDBC-драйверы для DB2 в папку db2 и добавьте их в путь к классу.
  3. Укажите путь к драйверам базы данных в файле lib.properties путем добавления в этот файл строк, указанных в листинге 5 (lib.properties — это файл, который предоставляет утилите Ant конфигурацию переменных lib JAR при сборке).

    Листинг 5. Добавление в файл lib.properties
    #
    # DB2 Java Connector
    #
    database.dir=${lib.dir}/db2

Изменение конфигурации библиотеки Hibernate

Замените свойства hibernate.default.properties указанными в листинге 6.

Листинг 6. Свойства Hibernate
# Установка по умолчанию (с возможностью переопределения) 
# с файлом свойств времени выполнения
# Свойства подключения -->
hibernate.connection.username=ваше имя пользователя db2
hibernate.connection.password=ваш пароль db2
hibernate.connection.driver_class=com.ibm.db2.jcc.DB2Driver
hibernate.connection.url=jdbc:db2://localhost:50000/OpenMRS

# Особые свойства подключения/отладки Hibernate
hibernate.show_sql=true
hibernate.format_sql=true
hibernate.lazy=true
hibernate.dialect=org.hibernate.dialect.DB2Dialect

# Особые свойства пула подключений Hibernate
hibernate.c3p0.max_size=50
hibernate.c3p0.min_size=0
hibernate.c3p0.timeout=100
hibernate.c3p0.max_statements=0
hibernate.c3p0.idle_test_period=3000
hibernate.c3p0.acquire_increment=1

# Параметры отладки Hibernate
hibernate.generate_statistics=true
hibernate.cache.use_structured_entries=true

# Необходимость в переопределении этих свойств возникать не должна
hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider
hibernate.connection.provider_class=org.hibernate.connection.C3P0ConnectionProvider
hibernate.connection.release_mode=after_transaction
hibernate.jdbc.use_get_generated_keys=false

В этой системе Hibernate будет устанавливать соответствия таблиц реляционной базы данных с сущностными классами согласно файлу *. hbm.xml, поэтому при вашей работе с объектами будут осуществляться операции с соответствующими таблицами в базе данных. Стратегия генерирования первичных ключей Hibernate включает следующее.

Assigned (назначенный)
Значение нового первичного ключа указывается приложением.
Increment (приращенный)
Новый первичный ключ будет генерироваться библиотекой Hibernate с использованием инкрементного режима во время работы.
Native (собственный)
Первичный ключ будет генерироваться с использованием разных стратегий для разных баз данных.
UUID
Универсальный уникальный идентификатор.
Foreign (внешний)
Используется внешний ключ из каких-либо других таблиц.
Sequence (последовательный)
Для генерирования первичного ключа используется механизм последовательностей, предоставляемый какой-либо конкретной базой данных, например Oracle. Метод генерирования первичных ключей в OpenMRS —identity.

Просмотреть конфигурацию можно в конфигурационном файле отображения Hibernate. В листинге 7 показан образец файла PatientIdentifier.hbm.xml.

Листинг 7. PatientIdentifier.hbm.xml
<id name="patientIdentifierId" type="int" column="patient_identifier_id"
		unsaved-value="0">
		<generator class="identity" />
</id>

Identity будет использовать механизм генерирования первичных ключей, предоставляемый базой данных; управление значением первичного ключа осуществляется исключительно базой данных. В листинге 8 показан программный код, который можно увидеть, если посмотреть на класс IdentityGenerator в пакете Hibernate в org.hibernate.id.

Листинг 8. Класс IdentityGenerator
public InsertGeneratedIdentifierDelegate getInsertGeneratedIdentifierDelegate(
	            PostInsertIdentityPersister persister,
	            Dialect dialect,
	            boolean isGetGeneratedKeysEnabled) throws HibernateException {
	        if ( isGetGeneratedKeysEnabled ) {
	            return new GetGeneratedKeysDelegate( persister, dialect );
	        }
	        else if ( dialect.supportsInsertSelectIdentity() ) {
	            return new InsertSelectDelegate( persister, dialect );
primary key generation mechanism	        }
	        else {
	            return new BasicDelegate( persister, dialect );
	        }
	    }

Свойство hibernate.jdbc.use_get_generated_keys позволяет использовать PreparedStatement.getGeneratedKeys() JDBC3 для извлечения генерируемых собственными средствами ключей после вставки. Это свойство требует наличия драйвера JDBC версии старше третьей и JRE версии старше четвертой. Если не добавить данное свойство, вы получите исключение The database returned no natively generated identity value («База данных не возвратила сгенерированного собственными средствами идентификационного значения»).

Изменение конфигурации времени выполнения проекта

Для изменения среды выполнения проекта имеются две основные задачи.

  • Изменение файла context.xml

    При первом выполнении приложение будет проверять, может ли оно подключиться к базе данных и не пуста ли она. Файл context.xml представляет собой конфигурацию, используемую приложением для выполнения процесса проверки.

    Во время выполнения приложение:

    • запустит оператор выбора для проверки того, имеются ли в базе данных пользовательские данные;
    • определит, требуется ли инициализация.

    Измените указанный файл путем включения в него информации, представленной в листинге 9, чтобы система могла подключаться к базе данных. Убедитесь в том, что пользователь DB2 имеет необходимые полномочия для доступа к базе данных и работы с ней.

    Листинг 9. Файл context.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <Context antiJARLocking="true" reloadable="false" useHttpOnly="false">
    <Resource name="jdbc/OpenMRS"
    auth="Container"
    type="javax.sql.DataSource"
    factory="org.apache.commons.dbcp.BasicDataSourceFactory"
    validationQuery="SELECT * FROM users"
    url="jdbc:db2://localhost:50000/OpenMRS"
    driverClassName="com.ibm.db2.jcc.DB2Driver"
    username="yваше имя пользователя db2"
    password="yваш пароль db2"
    maxWait="3000"
    maxIdle="100"
    maxActive="10" />
    </Context>
  • Деактивация фильтра обновления

    Фильтр обновления, сконфигурированный в файле web.xml, проверяет обновления базы данных путем выполнения определенных команд MySQL. Для переноса проекта в DB2 деактивируйте этот фильтр обновления. Можно просто удалить фильтр, но лучше будет закомментировать его (<!-- -->), как показано в листинге 10.

    Листинг 10. Деактивация фильтра
    <!--filter>
            <filter-name>UpdateFilter</filter-name>
            <filter-class>org.openmrs.web.filter.update.UpdateFilter</filter-class>
        </filter>
        <filter-mapping>
    	 <filter-name>UpdateFilter</filter-name>
    	 <url-pattern>/*</url-pattern>
    </filter-mapping-->

    Добавьте в свое приложение openmrs-runtime.properties (конфигурацию свойств времени выполнения). Как показано в листинге 11, во время выполнения приложение OpenMRS будет подключаться к базе данных, используя конфигурацию из этого файла.

    Листинг 11. openmrs-runtime.properties
    #Auto generated by OpenMRS initialization wizard
    #Fri Apr 08 15:53:48 CST 2011
    module.allow_web_admin=true
    connection.url=jdbc:db2://localhost:50000/openmrs
    connection.username=ваше имя пользователя db2
    connection.password=ваш пароль db2
    auto_update_database=false

Изменение метода класса

Чтобы приложение гарантированно могло использовать драйвер JDBC для DB2, необходимо внести некоторые изменения в драйверы подключения к базе данных.

Замените метод verifyConnection в классе InitializationFilter, который находится в пакете org.openmrs.web.filter.initialization, методом, показанным в листинге 12.

Листинг 12. Замена метода verifyConnection
private boolean verifyConnection(String connectionUsername, String connectionPassword, 
String databaseConnectionFinalUrl) {
        try {
                Class.forName("com.ibm.db2.jdbc.DB2Driver").newInstance();
	DriverManager.getConnection(databaseConnectionFinalUrl, connectionUsername, 
                    connectionPassword);
		return true;			
	   }
	      catch (Exception e) {
	errors.add("User account " + connectionUsername + " does not work. " 
                         + e.getMessage()
	+ " See the error log for more details");
                       // ТРЕБУЕТСЯ интернационализировать это
                       log.warn("Error while checking the connection user account", e);
               	return false;
	       }
	}

Замените метод loadDatabaseDriver класса DatabaseUtil, который находится в пакете org.openmrs.util, программным кодом, указанным в листинге 13.

Листинг 13. Замена метода loadDatabaseDriver
public static void loadDatabaseDriver(String connectionUrl) throws 
   ClassNotFoundException {
		if (connectionUrl.contains("mysql"))
			Class.forName("com.mysql.jdbc.Driver");
		else if (connectionUrl.contains("hsqldb"))
			Class.forName("org.hsqldb.jdbcDriver");
		else if (connectionUrl.contains("postgresql"))
			Class.forName("org.postgresql.Driver");
		else if (connectionUrl.contains("oracle"))
			Class.forName("oracle.jdbc.driver.OracleDriver");
		else if (connectionUrl.contains("jtds"))
			Class.forName("net.sourceforge.jtds.jdbc.Driver");
		else if (connectionUrl.contains("sqlserver"))
			Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
		else
			Class.forName("com.ibm.db2.jdbc.DB2Driver");
			
	}

Чтобы предотвратить выполнение несовместимых команд системой DB2, замените метод updatesRequired класса DatabaseUpdater, который находится в пакете org.openmrs.util, программным кодом, указанным в листинге 14.

Листинг 14. Замена метода updatesRequired
public static boolean updatesRequired() throws Exception {
		log.debug("checking for updates");
		return false;
	}

Чтобы предотвратить нежелательную инициализацию во время первого выполнения приложения, замените метод initializationRequired класса InitializationFilter, который находится в пакете org.openmrs.web.filter.initialization. Образец показан в листинге 15.

Листинг 15. Замена метода initializationRequired
public static boolean initializationRequired() {
		return false;
	}

На данном этапе программный код проекта будет работать с базой данных DB2. Однако для миграции на сервер приложений WebSphere требуется скомпоновать проект в виде файла EAR. Собрать файл EAR можно с помощью утилиты Ant. Добавьте в файл Ant build.xml целевой формат ear. В файл EAR обязательно должны быть включены файл WAR и дескриптор развертывания Web-приложения. Укажите их, как показано в листинге 16.

Листинг 16. Добавление целевого формата
<target name="ear" depends="package-web" description="build ear">
        <ear destfile="${dist.dir}/${webapp.name}.ear"
                  appxml="${metadata.dir}/META-INF/application.xml">
	    <fileset dir="${dist.dir}" includes="*.war"/>      
	    <fileset dir="${metadata.dir}/META-INF"/>
          </ear>
   </target>

Развертывание файла EAR на сервере приложений WebSphere

Во время инициализации приложения в связи с ошибкой в программе фильтры выполняются не по порядку. Неверный порядок приводит к ошибке времени выполнения, при которой контекст используется неправильно, если он не был установлен. Для решения этой проблемы требуется исправление для вашего сервера приложений WebSphere:

  • 7.0.0-WS-WASSDK-FP0000017.pak
  • 7.0.0-WS-WAS-FP0000017.pak

Загрузите соответствующее исправление в зависимости от используемой операционной системы.

Изменение пользовательских свойств

Если развернуть файл EAR на данном этапе, вы увидите на панели Net плагина Firebug ошибки 403 Forbidden («Доступ запрещен»), как показано на рисунке 8.

Рисунок 8. Ошибки 403 Forbidden

Данная ошибка регистрируется, когда у вас нет необходимых прав доступа к определенным Web-ресурсам. Образец приложения возвращает некоторые ресурсы из каталога WEB-INF. На сервере приложений WebSphere ресурсы в этом каталоге защищены, и у вас нет прав доступа к ним. Для решения этой проблемы добавьте одно свойство в пользовательские свойства своего сервера приложений WebSphere.

  1. Щелкните ссылку Servers (Серверы) на консоли Integrated Solutions Console своего сервера приложений WebSphere.
  2. Выберите типы серверов WebSphere application servers (Серверы приложений WebSphere).
  3. Выберите имя своего сервера (в приведенном примере используется имя server1), затем Web container (Web-контейнер) -> Custom properties (Пользовательские свойства).
  4. Добавьте новое свойство ExposeWEBINFonDispatch и определите для него в столбце Value (Значение) установку true (истина), как показано на рисунке 9.
Рисунок 9. Пользовательские свойства сервера приложений WebSphere

Для свойства ExposeWEBINFonDispatch обязательно должно быть установлено значение true, чтобы отправленный запрос (forward или include) мог обратиться к какому-либо статическому файлу из каталога WEB-INF приложения.

На этом миграция завершена. Если вы столкнулись с какими-либо проблемами, обратитесь к следующему разделу.


Устранение неисправностей

В процессе миграции вы можете столкнуться с ошибками, некоторые примеры которых приведены ниже. Лучшим способом их исправления является анализ журнала регистрации ошибок и характера ошибки для выяснения первопричины ее возникновения.


ОшибкаРекомендация
Database connection error (Ошибка подключения к базе данных)Убедитесь в том, что пользователь имеет необходимые права доступа, и проверьте, может ли пользователь получить доступ к схеме базы данных. Проверьте, соответствует ли драйвер JDBC версии базы данных; при несовпадении версий подключение не будет работать.
BUILD FAILED C:\Documents\openmrs-trunk\build.xml:150: Unable to find a javac compiler;com.sun.tools.javac.Main is not on the classpath (НЕ УДАЛОСЬ ВЫПОЛНИТЬ СБОРКУ C:\Documents\openmrs-trunk\build.xml:150: не удается найти компилятор Javac; com.sun.tools.javac.Main по пути к классу отсутствует)Возможно, JAVA_HOME не указывает на пакет JDK. В настоящее время для него установлен путь C:\Program Files\Java\jre6. Скопируйте файл C:\Program Files\Java\jdk1.6.0_10\lib\tools.jar в папку C:\Program Files\Java\jre6\lib\ext.
Can't load moduleXX (Не удается загрузить модуль XX)Загрузите соответствующие модули в каталог развертывания папки WEB-INF\bundledModules. Модули можно найти в списке Репозиторий модулей OpenMRS.
No ContextLoaderListener registered (Класс ContextLoaderListener не зарегистрирован) Скорее всего, приложению не удается загрузить файлы свойств времени выполнения в среде. Можно попробовать скопировать данный файл в корневой каталог вашего Web-приложения.


Загрузка

ОписаниеИмяРазмер
Образец программного кода для данной статьиopenmrsear.zip37 МБ

Ресурсы

Научиться

Получить продукты и технологии

  • Установка OpenMRS: полное описание процесса установки и конфигурирования OpenMRS.
  • Получите пакет исправлений WebSphere Application Server Java SDK 1.6 SR9 FP1 . Центр исправлений предоставляет исправления и обновления для вашего программного обеспечения, аппаратных средств и операционной системы.
  • Получите пакет исправлений IBM WebSphere Application Server Version 7.0.0 Fix Pack 17. Центр исправлений предоставляет исправления и обновления для вашего программного обеспечения, аппаратных средств и операционной системы.
  • Загрузите исходный код OpenMRS svn. Для подготовки этой статьи использовалась версия 1.7.2.
  • Оценивайте программное обеспечение IBM наиболее удобным для вас способом: опробуйте файлы для загрузки и ознакомительные версии, поработайте в облачной среде.

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Open source, Information Management, WebSphere
ArticleID=843582
ArticleTitle=Миграция OpenMRS на систему DB2 и сервер приложений WebSphere
publish-date=10302012