четверг, 6 июня 2013 г.

Установка IBM Websphere Message Broker и Message Broker Explorer v8 на SUSE Linux Enterprise Server 11 SP2 и CentOS 6.6

В данной статье рассказано о установке IBM Websphere MessageBroker 8 на  SUSE Linux Enterprise Server 11 SP2

Перед выполнением инструкций необходимо установить IBM Websphere MQ 7.5
Инструкция приведена в статье Установка IBM Websphere MQ 7.5 на SUSE Linux Enterprise Server 11 SP2 и CentOS 6.6.

1) Распаковываем дистрибутив (В моем случае дистрибутив версии 8.0.0.1)

2) Переходим в папку с распакованным дистрибутивом

3) Запускаем инсталлятор в консольном режиме
sudo ./setuplinuxx64 -i console

4) Проходим по всем этапам установки (можно указать путь по которому производится установка)

5) Добавляем пользователей в группу mqbrkrs
OpenSUSE/SLES
sudo /usr/sbin/usermod -A mqbrkrs {user}
sudo /usr/sbin/usermod -A mqbrkrs root
CentOS/Redhat
sudo /usr/sbin/usermod -a -G mqbrkrs {user}
sudo /usr/sbin/usermod -a -G mqbrkrs root

6) При необходимости ставим патч (В моем случае дистрибутив версии 8.0.0.5)
Распаковываем дистрибутив патча в отдельную папку, переходим в нее и повторяем шаги 3 и 4 описанные ранее

7) Переходим в папку с установленным MessageBroker
cd /opt/ibm/mqsi/8.0.0.5/bin

8) Создаем новый broker, запускаем его и смотрим статус
. ./mqsiprofile
./mqsicreatebroker QM_DEV1.BRK -q QM_DEV1 -d defined
./mqsistart QM_DEV1.BRK
./mqsireportbroker QM_DEV1.BRK

9) Копируем из папки /opt/ibm/mqsi/8.0.0.2/ODBC/unixodbc в папку /var/mqsi/odbc файл odbc.ini

10) Создаем в папке /var/mqsi/common/profiles файл odbc.sh (не забываем установить флаг на исполнение) со следующим содержимым:

#!/bin/sh
ODBCINI=${MQSI_WORKPATH}/odbc/odbc.ini
export ODBCINI

11) Выполняем действия описанные в статье Настройка ODBC datasource для IBM Websphere Message Broker

12) Для запуска WMB можно создать скрипт со следующим содержимым:

#!/bin/sh
. /opt/ibm/mqsi/8.0.0.5/bin/mqsiprofile
/opt/ibm/mqsi/8.0.0.5/bin/mqsistart QM_DEV1.BRK

13) Готово

При необходимости устанавливаем MessageBroker Explorer из папки /MBExplorer (на сервере с доступом только через консоль (без GUI) не нужно)

1) В распакованном ранее дистрибутве переходим в папку MBExplorer
cd /MBExplorer

2) Запускаем установку в консольном режиме
sudo ./install.bin -i console

3) Проходим по всем этапам установки (можно указать путь по которому производится установка)

4) Готово

среда, 5 июня 2013 г.

Установка IBM Websphere MQ и MQ Explorer 7.5 на SUSE Linux Enterprise Server 11 SP2 и CentOS 6.6

В данной статье рассказано о установке IBM Websphere MQ 7.5 на  SUSE Linux Enterprise Server 11 SP2 (SLES 11 SP2) и CentOS 6.6.

1) Распаковываем дистрибутив

2) Переходим в папку с распакованным дистрибутивом

3) Принимаем лицензионное соглашение
sudo ./mqlicense.sh

4) Устанавливаем необходимые пакеты:
sudo rpm -ivh MQSeriesRuntime-7.5.0-0.x86_64.rpm MQSeriesServer-7.5.0-0.x86_64.rpm MQSeriesSDK-7.5.0-0.x86_64.rpm MQSeriesClient-7.5.0-0.x86_64.rpm MQSeriesJava-7.5.0-0.x86_64.rpm MQSeriesJRE-7.5.0-0.x86_64.rpm

Для того, что бы установить компоненты в директорию, отличную от директории по-умолчанию (/opt/mqm)
используем
sudo rpm --prefix /opt/customLocation -ivh MQSeriesRuntime-7.5.0-0.x86_64.rpm MQSeriesServer-7.5.0-0.x86_64.rpm MQSeriesSDK-7.5.0-0.x86_64.rpm MQSeriesClient-7.5.0-0.x86_64.rpm MQSeriesJava-7.5.0-0.x86_64.rpm MQSeriesJRE-7.5.0-0.x86_64.rpm

4.1) При необходимости устанавливем MQ Explorer (на сервере с доступом только через консоль(без GUI) не нужно)
sudo rpm -ivh MQSeriesExplorer-7.5.0-0.x86_64.rpm

5) Добавляем пользователей в группу mqm
OpenSuse/SLES
sudo /usr/sbin/usermod -A mqm {user}
sudo /usr/sbin/usermod -A mqm root
CentOS/Redhat
sudo /usr/sbin/usermod -a -G mqm {user}
sudo /usr/sbin/usermod -a -G mqm root

6) Устанавливаем проинсталлированный MQ как профиль по-умолчанию
cd /opt/mqm/bin
sudo ./setmqinst -i -p /opt/mqm

7) Проверяем установку
dspmqver
В результате получаем:
Name:        WebSphere MQ
Version:     7.5.0.0
Level:       p000-L120604
BuildType:   IKAP - (Production)
Platform:    WebSphere MQ for Linux (x86-64 platform)
Mode:        64-bit
O/S:         Linux 3.0.13-0.27-default
InstName:    Installation1
InstDesc:  
InstPath:    /opt/mqm
DataPath:    /var/mqm
Primary:     Yes
MaxCmdLevel: 750

8) Создаем QueueManager, запускаем его, смотрим статус
crtmqm QM_DEV1
strmqm QM_DEV1
dspmq -m QM_DEV1
В ответ на последнюю команду должны получить:
QMNAME(QM_DEV1)                                           STATUS(Running)

9) При необходимости отключаем Channel Authentication (Подробнее можно почитать по этой ссылке)
Запускаем консоль MQ:
runmqsc QM_DEV1

В консоли вводим команду:
ALTER QMGR CHLAUTH(DISABLED)

10) Создаем Listener
Запускаем консоль MQ:
runmqsc QM_DEV1
Создаем Listener
DEFINE LISTENER(DEFLISTENER) TRPTYPE(TCP) PORT(1414) CONTROL(QMGR) DESCR('Default listener')
Запускаем его
START LISTENER(DEFLISTENER)
Смотрим статус
DISPLAY LISTENER(DEFLISTENER)

11) Все готово

вторник, 14 мая 2013 г.

Форматируем XML из строки


Иногда возникает необходимость отформатировать XML представленный в виде linarized строки (то есть без отступов и переводов строки) Для этого я использую следующие функции:

import java.io.ByteArrayOutputStream;
import java.io.StringReader;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.apache.log4j.Logger;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.xml.sax.InputSource;

public class XMLUtils {

 private static final Logger logger = Logger.getLogger(XMLUtils.class);

 /**
  * Возвращает переформатированную строку
  * 
  * @param inputString
  *            Строка содержащая неформатированный XML
  * @return Строка содержащая отформатированный XML
  */
 public static String formatXMLString(String inputString) {
  String outputString = "";
  try {
   DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
   DocumentBuilder db = dbf.newDocumentBuilder();
   InputSource is = new InputSource(new StringReader(inputString));
   Document document = db.parse(is);
   outputString = documentToFormattedString(document);
  } catch (Exception ex) {
   logger.warn(ex.getMessage(), ex);
  }
  return outputString;
 }

 /**
  * Возвращает строковое представление Узла(Node) в форматированном виде
  * 
  * @param node
  *            Объект Node
  * @return Строка содержащая отформатированный XML
  */
 public static String documentToFormattedString(Node node) {
  ByteArrayOutputStream baos = new ByteArrayOutputStream();

  try {
   DOMSource source = new DOMSource(node);
   StreamResult result = new StreamResult(baos);
   TransformerFactory transFactory = TransformerFactory.newInstance();
   Transformer transformer = transFactory.newTransformer();
   transformer
     .setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no");
   transformer.setOutputProperty(OutputKeys.METHOD, "xml");
   transformer.setOutputProperty(OutputKeys.INDENT, "yes");
   // Без данного параметра не работают отступы
   transformer.setOutputProperty(
     "{http://xml.apache.org/xslt}indent-amount", "2");
   transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");

   transformer.transform(source, result);

  } catch (Exception ex) {
   logger.warn(ex.getMessage(), ex);
  }

  return new String(baos.toByteArray());
 }
}

понедельник, 29 апреля 2013 г.

Настройка ODBC datasource для IBM Websphere Message Broker


1) Настраиваем ODBC источник (ODBC.ini для *nix или через панель управления для Windows)

Для Windows - через панель управления (Панель управления->Администрирование->Источники данных (ODBC)->Системный DSN)
Создаем новой источник данных. В качестве драйвера выбираем "Websphere Message Broker ({Версия брокера}) - DataDirect Technologies {Название СУБД}"
Прописываем все необходимые параметры в открывшемся окне

Для *nix настройку производим через odbc.ini (для WMB 8.0 файл по-умолчанию лежит в /var/mqsi/odbc)


2) Выполняем команду
. ./mqsiprofile
./mqsisetdbparms {BROKER_NAME} -n {datasource_name} -u {user_name} -p {password}
Должно появится сообщение о успешном выполнении команды:
BIP8071I: Successful command completion. 

3) Для проверки выполняем команду
./mqsicvp -n {datasource_name} -u {user_name} -p {password}
Должно появится сообщение о успешном выполнении команды:

Длинная простыня описания БД, драйвера и т.п.
и в конце BIP8071I: Successful command completion. 

Все готово

среда, 24 апреля 2013 г.

Запуск OpenJPA приложения с помощью JUnit

в параметрах JVM необходимо указать путь к openjpa.jar

Например:
-javaagent:c:\Users\e.kermas\.m2\repository\org\apache\openjpa\openjpa\2.2.0\openjpa-2.2.0.jar