2 Replies Latest reply on Jan 8, 2010 5:22 PM by Marcin Misiewicz

    Bean validation sample app ?

    Marcin Misiewicz Newbie

      Hi

       

      I'd like to see bean validation in action and probably include this feature in my app. I have downloaded jboss 6 M1, my app is working correctly.

      But I don't know how to apply bean validation on persisting and updating entities.

       

      I'm wondering if there is available demo app which shows the new features of the jboss in action, which can be treated as a reference implementation and the strong programming pattern ?

        • 2. Re: Bean validation sample app ?
          Marcin Misiewicz Newbie

          I have read the doc you posted. Thanks for that link.

           

          But I still have some problems.

           

          The bean validation docs says that it should be possible to inject the validator instance, in my stateless session bean when I try to inject validator using well known @Resource annotiation I get the following exception during deployment :

           

          23:06:17,616 ERROR [Ejb3Deployment] Exception while processing container metadata for EJB: UserAssignmentBean in unit: pl.scentia.smartoffice.business.jar
          23:06:17,618 ERROR [AbstractKernelController] Error installing to Real: name=vfsfile:/home/misiek/dev/jboss-eas/server/default/deploy/pl.scentia.smartoffice.ear.ear/ state=PreReal mode=Manual requiredState=Real
          org.jboss.deployers.spi.DeploymentException: Error deploying pl.scentia.smartoffice.business.jar: Exception while processing container metadata for EJB: UserAssignmentBean in unit: pl.scentia.smartoffice.business.jar
               at org.jboss.ejb3.deployers.Ejb3Deployer.deploy(Ejb3Deployer.java:196)
               at org.jboss.ejb3.deployers.Ejb3Deployer.deploy(Ejb3Deployer.java:61)
               at org.jboss.deployers.vfs.spi.deployer.AbstractSimpleVFSRealDeployer.deploy(AbstractSimpleVFSRealDeployer.java:56)
               at org.jboss.deployers.spi.deployer.helpers.AbstractSimpleRealDeployer.internalDeploy(AbstractSimpleRealDeployer.java:62)
               at org.jboss.deployers.spi.deployer.helpers.AbstractRealDeployer.deploy(AbstractRealDeployer.java:50)
               at org.jboss.deployers.plugins.deployers.DeployerWrapper.deploy(DeployerWrapper.java:179)
               at org.jboss.deployers.plugins.deployers.DeployersImpl.doDeploy(DeployersImpl.java:1448)
               at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1166)
               at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1219)
               at org.jboss.deployers.plugins.deployers.DeployersImpl.install(DeployersImpl.java:1107)
               at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)
               at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1633)
               at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:935)
               at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1083)
               at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:985)
               at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:823)
               at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:553)
               at org.jboss.deployers.plugins.deployers.DeployersImpl.process(DeployersImpl.java:783)
               at org.jboss.deployers.plugins.main.MainDeployerImpl.process(MainDeployerImpl.java:699)
               at org.jboss.system.server.profileservice.repository.MainDeployerAdapter.process(MainDeployerAdapter.java:117)
               at org.jboss.system.server.profileservice.hotdeploy.HDScanner.scan(HDScanner.java:371)
               at org.jboss.system.server.profileservice.hotdeploy.HDScanner.run(HDScanner.java:256)
               at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
               at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:351)
               at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:178)
               at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:165)
               at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:267)
               at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
               at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
               at java.lang.Thread.run(Thread.java:636)
          Caused by: java.lang.Exception: Exception while processing container metadata for EJB: UserAssignmentBean in unit: pl.scentia.smartoffice.business.jar
               at org.jboss.ejb3.Ejb3Deployment.start(Ejb3Deployment.java:565)
               at org.jboss.ejb3.deployers.Ejb3Deployer.deploy(Ejb3Deployer.java:189)
               ... 29 more
          Caused by: java.lang.RuntimeException: mapped-name is required for pl.scentia.smartoffice.business.UserAssignmentBean/v of deployment UserAssignmentBean
               at org.jboss.injection.ResourceHandler.loadXmlResourceEnvRefs(ResourceHandler.java:310)
               at org.jboss.injection.ResourceHandler.loadXml(ResourceHandler.java:350)
               at org.jboss.ejb3.EJBContainer.processMetadata(EJBContainer.java:598)
               at org.jboss.ejb3.Ejb3Deployment.processEJBContainerMetadata(Ejb3Deployment.java:434)
               at org.jboss.ejb3.Ejb3Deployment.start(Ejb3Deployment.java:543)
               ... 30 more
          23:06:17,650 WARN  [HDScanner] Failed to process changes
          org.jboss.deployers.client.spi.IncompleteDeploymentException: Summary of incomplete deployments (SEE PREVIOUS ERRORS FOR DETAILS):
          
          *** DEPLOYMENTS IN ERROR: Name -> Error
          
          vfsfile:/home/misiek/dev/jboss-eas/server/default/deploy/pl.scentia.smartoffice.ear.ear/ -> org.jboss.deployers.spi.DeploymentException: Error deploying pl.scentia.smartoffice.business.jar: Exception while processing container metadata for EJB: UserAssignmentBean in unit: pl.scentia.smartoffice.business.jar
          
          
          DEPLOYMENTS IN ERROR:
            Deployment "vfsfile:/home/misiek/dev/jboss-eas/server/default/deploy/pl.scentia.smartoffice.ear.ear/" is in error due to the following reason(s): java.lang.RuntimeException: mapped-name is required for pl.scentia.smartoffice.business.UserAssignmentBean/v of deployment UserAssignmentBean
          
               at org.jboss.deployers.plugins.deployers.DeployersImpl.checkComplete(DeployersImpl.java:1002)
               at org.jboss.deployers.plugins.deployers.DeployersImpl.checkComplete(DeployersImpl.java:948)
               at org.jboss.deployers.plugins.main.MainDeployerImpl.checkComplete(MainDeployerImpl.java:870)
               at org.jboss.system.server.profileservice.repository.MainDeployerAdapter.checkComplete(MainDeployerAdapter.java:128)
               at org.jboss.system.server.profileservice.hotdeploy.HDScanner.scan(HDScanner.java:378)
               at org.jboss.system.server.profileservice.hotdeploy.HDScanner.run(HDScanner.java:256)
               at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
               at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:351)
               at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:178)
               at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:165)
               at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:267)
               at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
               at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
               at java.lang.Thread.run(Thread.java:636)
          
           
          

           

          Also when I try to inject using @Inject annotation I get the null pointer exception.

           

          The other problem is validation of the entity when persisting or updating the docs says :

           

          If you are using JPA 2 and Hibernate Validator is in the classpath the JPA2 specification requires that Bean Validation gets enabled. The properties javax.persistence.validation.group.pre-persist,javax.persistence.validation.group.pre-update and javax.persistence.validation.group.pre-remove as described in Section 6.2.1, “Hibernate event-based validation” can in this case be configured inpersistence.xml. persistence.xml also defines a node validation-mode while can be set to AUTO, CALLBACK,NONE. The default is AUTO.

           

          My question is how can I tell jboss that I wan't to use jpa2, should I only change the version from 1.0 to 2.0 in the presistence.xml.

           

          As you can see I need (and I think that others too) some skeleton app with the demonstration of the new features of the jboss.