2013-02-11 3 views
2

У меня отсутствует что-то действительно базовое (связанное с загрузкой классов в конфигурации EAR или EAR). Я не мог понять, почему мои проверки JSR 303 и проверки Hibernate не запускаются из EAR ... Это вызывает срабатывание, если я создаю новый проект WAR.Проверка валика (JSR 303) и проверка Hibernate не срабатывают, когда внутри EAR

Я создаю новый проект с Maven, JSF 2.0, Open-JPA, EJB 3.0 на Weblogic Server 10.3. Я создал все проекты, используя архетипы maven. У меня есть окончательный EAR сборки, которое структурировано как:

  • PROJNAME
    • EJB
    • веб
    • Lib
    • META-INF

В Сети, У меня есть login.xhtml с userName и Password полей отображаются с TestMPB переменных и POMS, имеющей зависимость: валидация-апи 1.0.0.GA, зимую-валидатор 4.2.0.Final ...

(TestMPB) переменная страница Подкладочной бин имеют @Pattern и @NotEmpty аннотаций, но они никогда не срабатывают на этапе проверки JSF. Проверка JSF работает нормально, но я хочу использовать проверки JSR 303 и Hibernate.

login.xhtml содержит следующие строки: impt

<h:messages layout="table" showDetail="false" showSummary="true"/> 
<h:inputText class="textbox" id="userId" value="#{testMPB.userId}"></h:inputText> 
<h:commandButton id="button" action="#{testMPB.login}" value="Login" ></h:commandButton> 

TestMPB содержит:

@Pattern(regexp = "^(?=.*[a-zA-Z])[a-zA-Z0-9_]{2,15}\\s*$", message = "userId invalid") 
@NotEmpty(message = "userId empty") 
private String userId = ""; 

public String login(){ System.out.println("User Login ::"+getUserId()); 
    return "/web/ui/s/home/home.xhtml"; 
} 

Application.xml содержит

<?xml version="1.0" encoding="UTF-8"?> 
<application xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_5.xsd" version="5"> 
<display-name>ear</display-name> 
    <module> 
    <web> 
     <web-uri>web</web-uri> 
     <context-root>/NewAccountsWeb</context-root> 
    </web> 
    </module> 
    <module> 
    <ejb>ejb</ejb> 
    </module> 
    <library-directory>lib</library-directory> 
</application> 

Для отладки, я уверен:

  • Управляемый bean-компонент JSF (TestMPB) инициализирует загрузку страницы (путем добавления SOP в конструктор)
  • На странице submit вызывается метод и выводится значение userName.
  • Замены JARs, добавленные в POM, являются правильными, и они существуют в окончательной сборке EAR.
  • Те же проверки JSR 303 и Hibernate работают с тем же набором login.xhtml и TestMPB.java, когда я создаю проект WAR.
  • Создал фазовый прослушиватель и распечатал все этапы, чтобы убедиться, что фазы вызваны.
  • Для тестирования я также добавил проверки JSF (required=true), который работает и показывает сообщения в сообщении h:.

Может думать о чем-нибудь, что может решить эту проблему?

+0

Можете ли вы показать, где баны проверки api и hibernate bean validation заканчиваются в вашем последнем ухе? Проверка боба действительно должна включаться автоматически, когда API проверки боба обнаруживается в пути к классам. Я предполагаю, что есть проблема с загрузкой. – Hardy

ответ

1

Я был в состоянии решить эту проблему в одиночку ...

Я добавил SLF4J-log4j12 1.6.4 банки в моем проекте классовым пути и оба боб & Hibernate валидации на уровень поля начала работать ... jboss-logging-3.1.0.GA.jar также может работать ... Также барабан Log4j уже был в classpath.

Похоже, для целей ведения журнала Hibernate Validator использует некоторый Logging API, уровень абстракции, который поддерживает некоторые решения для регистрации в качестве реализации. Поэтому, если вы просто добавили поддерживаемую библиотеку ведения журнала в путь к классам, и регистрация будет делегировать любые запросы журнала этому провайдеру.

Странно, что в моих журналах сервера или во время компиляции не было ошибок в том, что для проверки Hibernate (или Bean JSR 303) отсутствует проверка журналов ... Я потратил 3 дня на это, но рад, что его работа сейчас ...