来自GlassFish控制台的Derby身份验证错误,但来自ij的相同凭据有效
我第一次尝试在没有IDE的情况下运行一个Java EE 7Web应用程序,并艰难地完成了学习曲线。为了简单起见,我从GlassFish 4.1和Derby 10.11.1.2开始,这是我用于开发的。
我目前的问题是在GlassFish Web界面上配置连接池时出错。错误为"连接身份验证失败。原因:用户ID或密码无效"。然而,我在一个DoS提示符和Chrome的GlashFish Web控制台中运行了ij。 在ij中,我可以输入‘CONNECT’jdbc:derby:localhost:1527/databasename;user=username;password=password‘;AND I CONNECT FOR并且可以查看表格等。在GlassFish Web控制台中,我的名称/值对具有相同的’USER‘和’PASSWORD‘值,但失败了(完全相同的字母和大小写)。我已尝试更改‘lobaseName’属性,以确保该错误不会误导人,并确认已正确找到数据库。 从表面上看,错误消息似乎是错误的,正如我在DOS窗口中所证明的那样。我确信我做错了什么,但我不知道如何诊断它。有什么建议吗?所采取步骤的更多细节:(尽管我确信这些步骤中的一些步骤优于其他步骤,但我的不成功让我产生了一种心态,即冗余比省略更好--总的来说,它似乎比基本设置所需的要复杂得多)。我的目标是WildFly,但GlassFish文档更好,所以我想我应该从那里开始。
相关Windows环境变量:
JAVA_HOME=C:Program FilesJavajdk1.8.0_40 DERBY_HOME=%JAVA_HOME%db DERBY_INSTALL=%DERBY_HOME% JAVADB_HOME=%DERBY_HOME% GLASSFISH=C:Program FilesJavaGlassFish-4.1 Path=%JAVA_HOME%in;%DERBY_HOME%in;%GLASSFISH%in;%GLASSFISH%glassfish CLASSPATH=%DERBY_HOME%libderbynet.jar;%DERBY_HOME%libderbytools.jar;%DERBY_HOME%derbyclient.jar;%DERBY_HOME%libderbyrun.jar WILDFLY_HOME=C:program filesjavawildfly8.2.0.Final
sysinfo显示所有正确的路径和版本
/li>- 通过BalusC将许多derby JAR从%DERBY_HOME%lib复制到%glassFish%glassfish Domainsdomain1libext。我认为类路径复制了它,但不会有什么坏处
- 启动的域‘asadmin start域’默认为域1
通过更改目录和使用Java启动了数据库。我想使用‘asadmin启动-数据库--数据库数据库路径’,但这总是启动了错误的版本。GlassFish和JDK都打包了derby/javadb,我和他们都想不出如何升级GlassFish或以其他方式启动正确的版本
cd usersjohn.netbeans-derby (root of the DB created by Netbeans) Java –jar "%derby_home%libderbyrun.jar" server start
- 将浏览器连接到‘localhost:4848’以创建JDBC连接池和资源
JDBC资源。已添加JDBC/ClubScoring,pool=ConnectionPool=>已选择并启用
- 使用‘asadmin start-database’从正确的目录启动数据库确实会让应用程序找到正确的数据库,但它会崩溃,因为数据库是用10.11.1.2版创建的,并且此命令启动了10.10.2.0的GlassFish版本
很抱歉这么长时间,但我找不到任何地方以简单的方式列出所有步骤,并认为从长远来看,细节可以节省时间。
解决方案
我今天处理这个问题,找到了一个解决方案: https://db.apache.org/derby/docs/10.14/ref/rrefattribsecmech.html
基本上唯一允许的安全选项(就10.14而言)是3、4和9。
4是缺省值,意思是";,而只是userid";。您可能认为这意味着只要给出一个用户ID,您就可以连接。但同时设置两个似乎是个问题。
若要使用(明文)密码和用户ID,您必须指定3。如果属性被删除或也为0,它也有效,但我认为这样做不会获得任何安全性。
相关文章