我正在阅读GlassFish4应用服务器上的一本书,并且无法将示例战争部署到服务器。服务器说:
"部署期间出错:部署应用程序时出现异常[jpaintro-1.0]:异常[EclipseLink-4002](Eclipse Persistence Services - 2.6.1.v20150605-31e8258):org.eclipse.persistence.exceptions .DatabaseException内部异常:java.sql.SQLException:分配连接时出错。原因:无法分配连接,因为:连接被拒绝,因为找不到数据库customerdb。错误代码:0。有关详细信息,请参阅server.log。"
数据库服务器是GlassFish附带的Derby。使用./ij提示符创建数据库:
connect' jdbc:derby:// localhost:1527 / customerdb; create = true';
接下来我可以登录:
connect' jdbc:derby:// localhost:1527 / customerdb; user = dev; password = dev';
并成功输入表创建数据并插入表数据。接下来,我可以使用SQL检索此数据。一切都很好,所以数据库存在。
物理位置数据库: /家庭/ fedora的/ GlassFish的/ glassfish4 /的glassfish /数据库/ 1527 / customerdb
设置了DERBY_HOME环境值。 我必须从命令行提示符设置以下资源:
./ asadmin create-jdbc-connection-pool --datasourceclassname org.apache.derby.jdbc.ClientDataSource --restype javax.sql.DataSource --property DatabaseName = customerdb:User = dev:password = dev CustomerDBPool
./ asadmin create-jdbc-resource --connectionpoolid CustomerDBPool jdbc / __ CustomerDBPool
我可以在GlassFish控制台中验证它们是否已成功创建。 JDBC连接池确实有一个条目CustomerDBPool,带有一个"附加属性" name = DatabaseName,value = customerdb以及用户/密码dev / dev。控制台中还有一个JDBC资源,其JNDI名称为jdbc / __ CustomerDBPool,池名称为CustomerDBPool
我无法部署的war文件包含一个JPA实体Customer和名为bean JpaDemoBean的CDI。后者构造一些Customer对象并将它们持久保存到数据库中。
在persistence.xml中只有一个jta-data-source元素,其值为jdbc / __ CustomerDBPool
我完全按照字面意思"来自书"。
现在为什么我不能部署战争?
突然之间,我无法通过命令行工具ij连接到数据库: 错误08004:连接被拒绝,因为找不到数据库customerdb。
我可以从命令行停止并启动数据库服务器,但在启动期间我收到消息: "数据库主目录无效:/ home / fedora / GlassFish / glassfish4 / glassfish / databases"
然而,启动过程仍在继续,并表示它已成功启动数据库。
提前致谢!