本文介紹了來自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連接池和資源
連接池:池名稱=ConnectionPool,資源類型=javax.sql.DataSource,數據庫驅動程序供應商=Derby,未啟用自檢(找到的文檔很少解釋它是什么)-步驟2保留為默認值
編輯連接啟用池的Ping On常規選項卡識別錯誤,其他屬性選項卡:將用戶更改為數據庫用戶名,將其他屬性保留為默認,添加…密碼=數據庫密碼,數據庫名稱=ClubScore
在提示設置每個屬性的過程中出現了錯誤。未顯示缺少URL的錯誤,但測試了以下使用和不使用URL=jdbc:derby://localhost:1527/ClubScoring
的步驟
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,它也有效,但我認為這樣做不會獲得任何安全性。
這篇關于來自GlassFish控制臺的Derby身份驗證錯誤,但來自ij的相同憑據有效的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,