每次我要求的EntityManager爲null,請參閱:的EntityManager返回總是空
@Named
@ApplicationScoped
@AnBasicDAO
public class BasicDAOImpl implements BasicDAO, Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@PersistenceContext(unitName="generalPU")
protected EntityManager entityManager;
這是我的persistence.xml:
<persistence-unit name="generalPU" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<non-jta-data-source>java:/comp/env/jdbc/testeDS</non-jta-data-source>
<properties>
<property name="hibernate.show_sql" value="false" />
<property name="hibernate.format_sql" value="false" />
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.cache.use_second_level_cache"
value="false" />
<property name="hibernate.cache.use_query_cache" value="false" />
<property name="hibernate.jdbc.batch_size" value="50" />
</properties>
</persistence-unit>
這是我在server.xml中資源( Tomcat的):
<Context docBase="/home/usertest/Programas/apache-tomcat-7.0.59/webapps/cardoso" path="/cardoso" reloadable="false" source="org.eclipse.jst.jee.server:cardoso">
<Resource name="jdbc/testeDS" auth="Container" type="javax.sql.DataSource"
username="postgres"
password="pgadmin"
driverClassName="org.postgresql.Driver"
url="jdbc:postgresql://localhost:5432/teste"
maxTotal="25"
maxIdle="10"
validationQuery="select 1" />
</Context>
我的context.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<ResourceLink global="jdbc/sabrecadoDS" name="jdbc/testeDS" type="javax.sql.DataSource"/>
<Manager pathname=""/> <!-- disables storage of sessions across restarts -->
<Resource name="BeanManager"
auth="Container"
type="javax.enterprise.inject.spi.BeanManager"
factory="org.jboss.weld.resources.ManagerObjectFactory"/>
</Context>
有什麼不對嗎? EntityManager始終爲空。一段時間以前,我用Spring(現在是CDI),並在applicationContext中定義了它並正常工作。
你如何獲得對你的'BasicDAOImpl'的引用? –
對不起,我沒有重視你的問題。 – RonaldoLanhellas
CDI在tomcat中無法使用。您需要JavaEE應用程序服務器,例如TomEE或Glassfish。在tomcat中,你需要使用一個獨立的CDI容器,比如Weld。 – OndrejM