2012-07-25 27 views
5

Chúng tôi có một ứng dụng doanh nghiệp sử dụng thư viện Joda DateTime. Ứng dụng này được triển khai vào Thùng chứa JBoss 7.2.0 Alpha1. Một số lớp trong mô hình miền của chúng tôi có chú thích @Past trên các trường kiểu DateTime. Để xác nhận các ràng buộc này, chúng tôi muốn sử dụng các trình xác nhận ràng buộc được cung cấp bởi trình duyệt tính hợp lệ hibernate. Do đó, chúng tôi đã thêm một phụ thuộc 'org.hibernate.validator' vào tệp MANIFEST.MF của tệp tai của chúng tôi. Chúng tôi đang sử dụng phiên bản 2.0 của thư viện Joda. Do đó, chúng tôi đã đóng gói tệp joda-time-2.0.jar trong tai của mình. Chúng tôi không sử dụng phiên bản 1.6.2 đó là có sẵn như là một mô-đun của JBoss 7Sử dụng hạn chế xác nhận bean xác thực hibernate JodaTime bean trong JBoss

Khi xác nhận một đối tượng với một lĩnh vực DateTime ngoại lệ sau đây được ném:

10:51:41,140 ERROR [org.acme.GlobalExceptionHandler] (EJB default - 10) Exception caught by global exception handler: javax.validation.UnexpectedTypeException: No validator could be found for type: org.joda.time.DateTime 
at org.hibernate.validator.engine.ConstraintTree.verifyResolveWasUnique(ConstraintTree.java:383) [hibernate-validator-4.2.0.Final.jar:4.2.0.Final] 
at org.hibernate.validator.engine.ConstraintTree.findMatchingValidatorClass(ConstraintTree.java:364) [hibernate-validator-4.2.0.Final.jar:4.2.0.Final] 
at org.hibernate.validator.engine.ConstraintTree.getInitializedValidator(ConstraintTree.java:313) [hibernate-validator-4.2.0.Final.jar:4.2.0.Final] 
at org.hibernate.validator.engine.ConstraintTree.validateConstraints(ConstraintTree.java:144) [hibernate-validator-4.2.0.Final.jar:4.2.0.Final] 
at org.hibernate.validator.engine.ConstraintTree.validateConstraints(ConstraintTree.java:117) [hibernate-validator-4.2.0.Final.jar:4.2.0.Final] 
at org.hibernate.validator.metadata.MetaConstraint.validateConstraint(MetaConstraint.java:84) [hibernate-validator-4.2.0.Final.jar:4.2.0.Final] 
at org.hibernate.validator.engine.ValidatorImpl.validateConstraint(ValidatorImpl.java:452) [hibernate-validator-4.2.0.Final.jar:4.2.0.Final] 

Sau khi một số lỗi, chúng tôi phát hiện ra rằng các cuộc gọi 'TypeUtils.isAssignable (validatorType, type)' trong 'ConstraintTree.findSuitableValidatorTypes' không thành công vì các loại trình duyệt tính hợp lệ có sẵn được lấy từ thư viện Joda đã được vận chuyển với JBoss thay vì thư viện Joda được đóng gói trong tệp tai của chúng ta.

Tôi đoán chúng tôi đang làm điều gì đó sai về việc tải lớp học. Ai có thể cho tôi một gợi ý?

+0

Sử dụng thư viện joda-time-1.6.2 đi kèm với JBoss Tôi không thể làm việc đó. Bạn có thể làm cho nó hoạt động với 1.6.2 không? – siebz0r

+0

Theo như tôi hiểu được mã vấn đề là một vấn đề nạp lớp. Các kiểu sẵn có được lưu trữ bởi trình duyệt tính hợp lệ hibernate đã được nạp bởi trình nạp mô-đun của mô đun jboss 'org.hibernate.time' trong khi DateTime được đưa ra làm đầu vào để xác thực là từ tai của tôi. I E. nó đã được tải bởi trình nạp lớp tệp tai. Do đó, lệnh gọi 'Class.isAssignableFrom' sẽ luôn thất bại. Cho dù đó là Joda 2.0 hay 1.6.2. Vì chúng tôi sử dụng tính năng 2.0, chúng tôi không thể sử dụng mô-đun Joda được vận chuyển bằng JBoss. – woelfle

Trả lời

3

Bạn đã thử thêm jboss-deployment-structure.xml vào tệp tai của mình chưa? Bằng cách này bạn sẽ có thể loại trừ thời gian mô-đun Joda:

<?xml version="1.0" encoding="UTF-8"?> 
<jboss-deployment-structure> 
    <deployment> 
     <exclusions> 
      <module name="org.joda.time"/> 
     </exclusions> 
    </deployment> 
</jboss-deployment-structure> 

Xem thêm https://docs.jboss.org/author/display/AS7/Class+Loading+in+AS7

2

Tiếp theo ý tưởng Hardy của tôi giải quyết vấn đề của tôi tạo ra một JBoss-triển khai-structure.xml trong WEB ứng dụng của tôi -INF thư mục chứa này:

<?xml version="1.0" encoding="UTF-8"?> 
<jboss-deployment-structure> 
    <deployment> 
     <exclusions> 
      <module name="org.hibernate.validator" /> 
     </exclusions> 
    </deployment> 
</jboss-deployment-structure> 

thay vì trừ org.joda.time tôi loại trừ org.hibernate.validator. Tôi hy vọng điều này cũng phù hợp với bạn.

Các vấn đề liên quan