среда, 13 марта 2013 г.

Функция, которая возвращает первый элемент типа Node.ELEMENT_NODE из SOAPBody

Возвращает первый элемент типа Node.ELEMENT из SOAPBody.
Необходима в случае отформатированного документа.
Тогда содержимое body представляет собой массив из трех Node:
Первая и последняя ноды представляют собой Node.TEXT_NODE с содержимым = "\n" или чем-то подобным (табуляции, переводы строки и т.п.).
Для получения значимого содержимого перебираем массив через body.getChildElements() и находим Node с типом Node.ELEMENT_NODE

/**
  * Возвращает первый элемент из SOAPBody
  * Необходимо в случае отформатированного документа, когда body.getFirstChild() == "\n"
  * @param body
  * @return
  */
 public Node getFirstChildElement(SOAPBody body) {
  @SuppressWarnings("unchecked")
  Iterator nodes = body.getChildElements();
  while (nodes.hasNext()) {
   Node currentNode = nodes.next();
   if (currentNode.getNodeType() == Node.ELEMENT_NODE) {
    return currentNode;
   }
  }
  return null;
 }

Получаем строковое представление Узла(Node) в форматированном виде


    /**
     * Возвращает строковое представление Узла(Node) в форматированном виде
     *
     * @param node Объект Node
     * @return Строковое представление
     */
    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());
    }

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

Возможные значения hibernate.hbm2ddl.auto


validate: validate the schema, makes no changes to the database.
update: update the schema.
create: creates the schema, destroying previous data.
create-drop: drop the schema at the end of the session.

Установка Oracle JDK под Ubuntu 12.10



1) Идем на сайт загрузок Java SE, и качаем пакет(.rpm), согласно нашей архитектуре

2) Устанавливаем alien (конвертер пакетов rpm to deb).
sudo apt-get install alien

3) Запускаем alien.
sudo alien jdk-7u4-linux-x64.rpm --scripts
Будет сгенерирован .deb пакет, в той же директории.

4) Далее устанавливаем пакет.
sudo dpkg -i jdk_1.7.004-1_amd64.deb
mkdir -p ~/.mozilla/plugins
создаем симлинки
ln -s /usr/java/jdk1.7.0_04/jre/lib/amd64/libjavaplugin_jni.so ~/.mozilla/plugins/
ln -s /usr/java/jdk1.7.0_04/jre/lib/amd64/libnpjp2.so ~/.mozilla/plugins/

5) Если уже была установлена OpenJDK, то выполняем следующие действия:
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.7.0_04/bin/javac 1
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.7.0_04/bin/java 1
sudo update-alternatives --config javac
sudo update-alternatives --config java

6) Проверяем версию java
java -version


воскресенье, 3 марта 2013 г.

Настройка SVN через JavaHL в Eclipse под Ubuntu

Ставим Subclipse со всеми модулями в Eclipse

выполняем слудующие команды в консоли:

sudo apt-get install libsvn-java
sudo find / -name libsvnjavahl-1.so

копируем найденный путь и вставляем его в eclipse.ini (выделено жирным):


-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.gtk.linux.x86_1.1.200.v20120913-144807
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Djava.library.path=/usr/lib/i386-linux-gnu/jni
-Dosgi.requiredJavaVersion=1.5
-Dhelp.lucene.tokenizer=standard
-XX:MaxPermSize=256m
-Xms40m
-Xmx512m


svn: E175002: Unable to connect to a repository at URL

Если svn под Ubuntu (у меня 12.10) выдает ошибку:


xxx@xxx-wnb:~$ svn info https://svn.yyy.ru/svn/ZZZAdapter/
svn: E175002: Unable to connect to a repository at URL 'https://svn.yyy.ru/svn/ZZZAdapter'
svn: E175002: OPTIONS of 'https://svn.yyy.ru/svn/ZZZAdapter': SSL handshake failed: SSL error: Key usage violation in certificate has been detected. (https://svn.yyy.ru)


то делаем вот что:

sudo apt-get install libneon27
sudo mv /usr/lib/libneon-gnutls.so.27 /usr/lib/libneon-gnutls.so.27.old
sudo ln -s /usr/lib/libneon.so.27 /usr/lib/libneon-gnutls.so.27

Кратко о причине:
- Кривой сертификат на сервере
- Библиотека на клиентской машине не принимает кривые сертификаты