Статьи

Glassfish 3.1.1 OSE с Hibernate Validator 4.3.0.Final

Цель : использовать валидатор гибернации 4.3.0.Final с Glassfish 3.1.1 OSE.

В последнее время я столкнулся с проблемой, что я не смог использовать последний стабильный валидатор hibernate (валидатор hiberante 4.3.0.Final) с операционной системой Glassfish 3.1.1.

Проблема в том, что в качестве модуля glassfish
используется более старая версия (
glassfish /
modules / bean-validator.jar ). Если вы проверите содержимое пакета (в
MANIFEST.MF ), вы увидите, что используется версия
4.1.0.Final .

ОК, как с этим бороться? Я узнал, что я не единственный, у кого проблема здесь.

http://stackoverflow.com/questions/10548931/how-to-upgrade-the-hibernate-validator-4-3-0-final-to-the-glassfish-3-1-2

Предложение дало мне некоторую мотивацию, которую, кажется, можно достичь 🙂

Поскольку я использую ухо, простое решение, представленное в ответе, было для меня неосуществимым (так как это был военный случай). Хорошо, давайте посмотрим, как далеко мы можем получить. Есть несколько ссылок (в конце концов я получил следующие 2 ссылки):

Я прочитал последний, так как мне показалось хорошей идеей изучить создание модулей, развертываемых на glassfish, однако даже если я создал пакет maven osgi, он не содержал всех необходимых зависимостей, и дескриптор, похоже, был в порядке. Звучит как неправильный путь для меня тогда.

Вернувшись к 1-ой ссылке, я нашел следующий svn-репозиторий и попытался скомпилировать вещи:
https://svn.java.net/svn/glassfish~svn/trunk/external/source-build

Однако только после того, как это было достигнуто (и путь длился довольно долго) Я понял, что это просто перестраивает валидатор hibernate с его зависимостями, и это, конечно, не нужно, поскольку они уже собраны и доступны в общедоступных репозиториях maven :).

Хорошо, пройдя следующие шаги в статье, я получил следующее решение:

  • проверенные источники стеклянной рыбы:
svn co https://svn.java.net/svn/hk2~svn/branches/hk2-gf-3.1.1/
  • обновленный pom, связанный с проверкой бинов, см. мой diff
Index: pom.xml
===================================================================
--- pom.xml	(revision 4105)
+++ pom.xml	(working copy)
@@ -54,9 +54,10 @@
          maven-bundle-plugin and hk2-maven-plugin together -->
     <packaging>jar</packaging>
     <properties>
-      <hibernate-validator.version>4.2.0.Final</hibernate-validator.version>
+      <hibernate-validator.version>4.3.0.Final</hibernate-validator.version>
       <javax.validation.version>1.0</javax.validation.version>
       <slf4j.version>1.6.1</slf4j.version>
+      <jboss-logging.version>3.1.0.CR2</jboss-logging.version>
     </properties>
     <name>Validation API (JSR 303) version ${javax.validation.version}, Hibernate Validator version ${hibernate-validator.version} and its dependencies repackaged as OSGi bundle</name>
 
@@ -89,7 +90,7 @@
                         <Embed-Dependency>
                             <!-- Only specify root artifacts that need to be embedded, everything else
                                  will be pulled in automatically based on Private-Package settings. -->
-                            *; artifactId=hibernate-validator|slf4j-api|slf4j-jdk14; inline=true
+                            *; artifactId=hibernate-validator|jboss-logging|slf4j-api|slf4j-jdk14; inline=true
                         </Embed-Dependency>
                         <Export-Package>
                              <!-- 
@@ -105,7 +106,7 @@
 
                         <Private-Package>
                              <!-- Have a private copy of external non-standard dependencies -->
-                             org.slf4j.*; com.googlecode.jtype.*; org.joda.time.*; org.jsoup.*
+                             org.jboss.logging.*; org.slf4j.*; com.googlecode.jtype.*; org.joda.time.*; org.jsoup.*
                         </Private-Package>
 
                         <Import-Package>
@@ -117,6 +118,12 @@
                                which is a JPA 2 class.
                            -->
                            org.slf4j; org.slf4j.spi; org.slf4j.helpers; version=${slf4j.version}; resolution:=optional,
+                           org.jboss.logging; version=${jboss-logging.version}; resolution:=optional,
+                           org.apache.log4j;resolution:=optional,
+                           org.jboss.logmanager;resolution:=optional,
+                           com.ibm.uvm.tools;resolution:=optional,
+                           com.sun.jdmk.comm;resolution:=optional,	
+                           javax.jmdns;resolution:=optional,
                            javax.persistence.*; version="2.0"; resolution:=optional,
                            *
                        </Import-Package>
@@ -263,6 +270,13 @@
         </dependency>
 
 
+	<dependency>
+		<groupId>org.jboss.logging</groupId>
+		<artifactId>jboss-logging</artifactId>
+		<version>${jboss-logging.version}</version>
+            <optional>true</optional>
+	</dependency>
+
         <!-- We bundle jdk binding inside this OSGi bundle -->
         <dependency>
            <groupId>org.slf4j</groupId>
  • постройки:
cd hk2-gf-3.1.1/external/bean-validator
mvn clean install
  • скопированы в модули Glassfish и удалены старые:
rm ${GLASSFISH_HOME}/glassfish/modules/bean-validator.jar
cp hk2-gf-3.1.1/external/bean-validator/target/bean-validator-1.1.15-SNAPSHOT.jar ${GLASSFISH_HOME}/glassfish/modules/
  • сделанный 🙂

Вопросы? хорошо, посмотрим позже, во время тестирования 🙂 Но самая первая попытка сработала отлично.

Комментарии? Не стесняйтесь делиться, поскольку я не эксперт по ОСГИ (пока :)), поэтому некоторые из моих обновлений могут … допустим, не будут иметь большого смысла.