Erreur entities : Could not instantiate Seam component
Bonjour,
Je débute un projet Seam et bloque depuis 2 jours sur une même erreur sans arriver à trouver la cause du problème.
Je vais essayé de retracer au mieux tout ce que j'ai pu faire :
J'ai donc créer un projet avec eclipse avec la version de seam 2.2.2
Par la suite j'ai configuré un serveur tomcat 6, et j'ai donc apporté quelques modifications à mon projet généré afin qu'il puisse fonctionner sous tomcat.
J'obtient alors la page d'accueil, avec au final plus aucune erreur excepté :
Citation:
WARN [PersistentPermissionResolver] no permission store available - please install a PermissionStore with the name 'org.jboss.seam.security.jpaPermissionStore' if persistent permissions are required.
Par la suite, dans eclipse, j'ai fait new>Seam Generate Entities avec un reverse engineer sur l'une de mes tables.
Lorsque je vais sur : tabletestList.xhtml, la liste est vide. Si je souhaite créer une nouvelle entrée, je me log en tant qu'admin et j'obtient l'erreur suivante :
Citation:
ERROR [SeamPhaseListener] swallowing exception
javax.el.PropertyNotFoundException: Target Unreachable, identifier 'tabletestHome' resolved to null
En effet, lorsque je regarde les logs, je vois bien que le composant n'a pas été instancié.
Dans ce cas, j'ai recopier les fichiers du src/hot dans mon src/main.
J'obtient bien alors l'initialisation du composant :
Citation:
INFO [Component] Component: tabletestHome, scope: CONVERSATION, type: JAVA_BEAN, class: org.domain.seamproject.session.TabletestHome
INFO [Component] Component: tabletestList, scope: EVENT, type: JAVA_BEAN, class: org.domain.seamproject.session.TabletestList
Par contre j'obtient l'erreur suivante lorsque je veux aller sur ma tabletestList :
Citation:
GRAVE: Error Rendering View[/TabletestList.xhtml]
org.jboss.seam.InstantiationException: Could not instantiate Seam component: tabletestList
...........
Caused by: java.lang.IllegalArgumentException: EntityManagerFactory not found in JNDI : java:/seamprojectEntityManagerFactory
...............
Caused by: javax.naming.NameNotFoundException: Le Nom seamprojectEntityManagerFactory n'est pas lié à ce Contexte
............
J'ai essayé de nombreuses solutions mais rien y fait. Si vous avez une piste, se serait avec plaisir ;)
Voici mes fichiers de config :
persistence.xml
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| <persistence-unit name="seamproject">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<non-jta-data-source>java:/seamprojectDatasource</non-jta-data-source>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
<property name="hibernate.default_catalog" value="ter"/>
<property name="jboss.entity.manager.factory.jndi.name"
value="java:/seamprojectEntityManagerFactory" />
</properties>
</persistence-unit> |
components.xml
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| <?xml version="1.0" encoding="UTF-8"?>
<components xmlns="http://jboss.com/products/seam/components"
xmlns:core="http://jboss.com/products/seam/core"
xmlns:persistence="http://jboss.com/products/seam/persistence"
xmlns:drools="http://jboss.com/products/seam/drools"
xmlns:bpm="http://jboss.com/products/seam/bpm"
xmlns:security="http://jboss.com/products/seam/security"
xmlns:mail="http://jboss.com/products/seam/mail"
xmlns:web="http://jboss.com/products/seam/web"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:transaction="http://jboss.com/products/seam/transaction"
xsi:schemaLocation=
"http://jboss.com/products/seam/core http://jboss.com/products/seam/core-2.2.xsd
http://jboss.com/products/seam/persistence http://jboss.com/products/seam/persistence-2.2.xsd
http://jboss.com/products/seam/drools http://jboss.com/products/seam/drools-2.2.xsd
http://jboss.com/products/seam/bpm http://jboss.com/products/seam/bpm-2.2.xsd
http://jboss.com/products/seam/security http://jboss.com/products/seam/security-2.2.xsd
http://jboss.com/products/seam/mail http://jboss.com/products/seam/mail-2.2.xsd
http://jboss.com/products/seam/web http://jboss.com/products/seam/web-2.2.xsd
http://jboss.com/products/seam/components http://jboss.com/products/seam/components-2.2.xsd
http://jboss.com/products/seam/transaction http://jboss.com/products/seam/transaction-2.2.xsd">
<!-- <core:init debug="true" jndi-pattern="@jndiPattern@"/>-->
<core:init transaction-management-enabled="false" />
<core:manager concurrent-request-timeout="500"
conversation-timeout="120000"
conversation-id-parameter="cid"
parent-conversation-id-parameter="pid"/>
<transaction:no-transaction />
<web:hot-deploy-filter url-pattern="*.seam"/>
<!-- Que je supprime les deux lignes dessous ou non ça ne change rien -->
<persistence:managed-persistence-context name="entityManager" auto-create="true"
persistence-unit-jndi-name="java:/seamprojectEntityManagerFactory"
entity-manager-factory="#{entityManagerFactory}"/>
<factory name="session" method="#{entityManager.getDelegate( )}"
scope="STATELESS" auto-create="true" />
<drools:rule-base name="securityRules">
<drools:rule-files><value>/security.drl</value></drools:rule-files>
</drools:rule-base>
<security:rule-based-permission-resolver security-rules="#{securityRules}"/>
<security:identity authenticate-method="#{authenticator.authenticate}" remember-me="true"/>
<event type="org.jboss.seam.security.notLoggedIn">
<action execute="#{redirect.captureCurrentView}"/>
</event>
<event type="org.jboss.seam.security.loginSuccessful">
<action execute="#{redirect.returnToCapturedView}"/>
</event>
<mail:mail-session host="localhost" port="25"/>
</components> |
Merci pour votre aide :)