javax.naming.NameNotFoundException:在此上下文中未绑定名称。找不到
确定发现Tomcat文件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' />解决方法
我试图找出为什么我的Web应用程序抛出一个
javax.naming.NameNotFoundException: Name [flexeraDS] is not bound in this Context. Unable to find [flexeraDS].
当我从中复制配置的一个姐妹悄悄地运行时。
我有:
通过右键单击并选择“新的持久性”从netbeans创建一个新的持久性,我不在乎我提供的实际值,但只需要在正确的目录中创建persistence.xml文件即可。如下编辑我的context.xml,以匹配工作姐妹项目中的那个编辑了我的web.xml以包含资源DataSource,如下所示如下编辑我的persistence.xml,再次匹配在姐妹项目上工作的相同值。在我的lib文件夹中添加了另一个项目中存在的所有库,还从NetBeans中添加了它们,以正确放入war。context.xml<?xml version='1.0' encoding='UTF-8'?><Context antiJARLocking='true' path='/PetLogin'> <ResourceLink global='ds/flexeraDS' name='ds/flexeraDS' type='javax.sql.DataSource'/></Context>web.xml
<?xml version='1.0' encoding='UTF-8'?><web-app ....><resource-ref><description>DB Connection</description><res-ref-name>ds/flexeraDS</res-ref-name><res-type>javax.sql.DataSource</res-type><res-auth>Container</res-auth> </resource-ref></web-app>persistence.xml
<?xml version='1.0' encoding='UTF-8'?><persistence version='1.0' xmlns='http://java.sun.com/xml/ns/persistence' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd '> <persistence-unit name='flexerajpa'><provider>org.eclipse.persistence.jpa.PersistenceProvider</provider><non-jta-data-source>java:/comp/env/ds/flexeraDS</non-jta-data-source><properties> <property name='eclipselink.ddl-generation' value='create-tables' /> <property name='eclipselink.ddl-generation.output-mode' value='database' /> <property name='eclipselink.weaving' value='static' /> <property name='eclipselink.logging.level' value='WARNING' /></properties> </persistence-unit></persistence>
现在,我的系统项目以某种方式设法在启动时在apache-tomcat-7.0.40 / bin /exampleDB内创建其数据库文件夹,而我的系统未创建它并引发如上所述的错误。
引发错误的代码是我第一次连接数据库:
EntityManager entityManager = PersistenceProvider.createEntityManager();
其中PersistenceProvider类为:
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(); }}
我没有这个可能的原因..如果有人有任何建议。谢谢
相关文章:
1. nignx - docker内nginx 80端口被占用2. docker - 各位电脑上有多少个容器啊?容器一多,自己都搞混了,咋办呢?3. docker网络端口映射,没有方便点的操作方法么?4. java - 为什么此私有静态变量能被访问呢?5. docker容器呢SSH为什么连不通呢?6. docker绑定了nginx端口 外部访问不到7. angular.js - angular内容过长展开收起效果8. macos - mac下docker如何设置代理9. php - 第三方支付平台在很短时间内多次异步通知,订单多次确认收款10. docker images显示的镜像过多,狗眼被亮瞎了,怎么办?
