javax.naming.NameNotFoundException:名称在此上下文中未绑定。找不到
我试图找出我的web应用程序抛出错误的原因javax.naming.NameNotFoundException:名称在此上下文中未绑定。找不到,java,jakarta-ee,jpa,orm,Java,Jakarta Ee,Jpa,Orm,我试图找出我的web应用程序抛出错误的原因 javax.naming.NameNotFoundException: Name [flexeraDS] is not bound in this Context. Unable to find [flexeraDS]. 当我正在从中复制配置的姐妹服务器安静运行时 我有: 通过右键单击并选择“new persistence”,从netbeans创建一个新的持久性,我不关心我给出的实际值,但我只需要在正确的目录中创建persistence.xml文件
javax.naming.NameNotFoundException: Name [flexeraDS] is not bound in this Context. Unable to find [flexeraDS].
当我正在从中复制配置的姐妹服务器安静运行时
我有:
public final class PersistenceProvider
{
private static Map<String, Object> lOptions = new HashMap<String, Object>();
static
{
lOptions.put(PersistenceUnitProperties.CACHE_SHARED_DEFAULT, "false");
}
private static EntityManagerFactory factory = Persistence
.createEntityManagerFactory("flexerajpa", lOptions);
private PersistenceProvider()
{
}
/**
* @return
*/
public static EntityManager createEntityManager()
{
return factory.createEntityManager();
}
/**
* @return
*/
public static Metamodel getMetamodel()
{
return factory.getMetamodel();
}
}
公共最终类PersistenceProvider
{
private static Map lOptions=new HashMap();
静止的
{
put(PersistenceUnitProperties.CACHE_SHARED_默认为“false”);
}
私有静态EntityManagerFactory工厂=持久性
.CreateEntityManager工厂(“flexerajpa”,lOptions);
私有PersistenceProvider()
{
}
/**
*@返回
*/
公共静态EntityManager createEntityManager()
{
返回factory.createEntityManager();
}
/**
*@返回
*/
公共静态元模型getMetamodel()
{
返回factory.getMetamodel();
}
}
我找不到可能的原因。。如果有人有任何建议。
谢谢确定发现Tomcat file server.xml也必须配置,数据源才能工作。因此,只需添加:
<Resource
auth="Container"
driverClassName="org.apache.derby.jdbc.EmbeddedDriver"
maxActive="20"
maxIdle="10"
maxWait="-1"
name="ds/flexeraDS"
type="javax.sql.DataSource"
url="jdbc:derby:flexeraDB;create=true"
/>
您还可以添加
<Resource
auth="Container"
driverClassName="org.apache.derby.jdbc.EmbeddedDriver"
maxActive="20"
maxIdle="10"
maxWait="-1"
name="ds/flexeraDS"
type="javax.sql.DataSource"
url="jdbc:derby:flexeraDB;create=true"
/>
在
META-INF/context.xml
文件下(这将仅在应用程序级别)。ugh,仅重复我自己的案例,它给出了大致相同的错误-在资源声明(server.xml)中,确保不要忽略driverClassName,例如,对于Oracle,它是“Oracle.jdbc.OracleDriver”,并且正确的JAR文件(例如,ojdbc14.jar)存在于Tomcat 8.0.44中的%CATALINA_HOME%/lib中。我这样做了:在Tomcat的server.xml上的标记“GlobalNamingResources”之间创建JNDI
例如:
在我的例子中,关键的部分是它是java:/comp/env/
我认为不建议直接将元素放在server.xml文件中,就像Apache文档中指定的那样?
EntityManager entityManager = PersistenceProvider.createEntityManager();
public final class PersistenceProvider
{
private static Map<String, Object> lOptions = new HashMap<String, Object>();
static
{
lOptions.put(PersistenceUnitProperties.CACHE_SHARED_DEFAULT, "false");
}
private static EntityManagerFactory factory = Persistence
.createEntityManagerFactory("flexerajpa", lOptions);
private PersistenceProvider()
{
}
/**
* @return
*/
public static EntityManager createEntityManager()
{
return factory.createEntityManager();
}
/**
* @return
*/
public static Metamodel getMetamodel()
{
return factory.getMetamodel();
}
}
<Resource
auth="Container"
driverClassName="org.apache.derby.jdbc.EmbeddedDriver"
maxActive="20"
maxIdle="10"
maxWait="-1"
name="ds/flexeraDS"
type="javax.sql.DataSource"
url="jdbc:derby:flexeraDB;create=true"
/>
<Resource
auth="Container"
driverClassName="org.apache.derby.jdbc.EmbeddedDriver"
maxActive="20"
maxIdle="10"
maxWait="-1"
name="ds/flexeraDS"
type="javax.sql.DataSource"
url="jdbc:derby:flexeraDB;create=true"
/>