簡體   English   中英

JDBC Oracle驅動程序存在包含特殊字符的用戶名的問題

[英]JDBC Oracle Driver Has Issue With Usernames Containing Special Characters

使用Vaadin 7我創建了一個簡單的登錄表單,將用戶名和密碼傳遞給管理與Oracle系統的數據庫連接的類。 該類然后登錄並創建會話。

以下憑據有效:

用戶名:User1

密碼:密碼1

這些憑據會拋出錯誤:

用戶名:user1@email.com

密碼:密碼1

兩者都是數據庫中的有效用戶。 我已經通過在Oracle SQL Developer中使用上述憑據證實了這一點。

我懷疑JDBC驅動程序不喜歡'@'或'。'。 在用戶名中。 有沒有辦法可以轉義任何一個字符,以便JDBC驅動程序在連接字符串中忽略它?

堆棧跟蹤:

Jan 28, 2014 5:07:48 PM oracle.jdbc.driver.OracleDriver registerMBeans
SEVERE: Error while registering Oracle JDBC Diagnosability MBean.
javax.management.MalformedObjectNameException: Invalid character '
' in value part of property
    at javax.management.ObjectName.construct(Unknown Source)
    at javax.management.ObjectName.<init>(Unknown Source)
    at oracle.jdbc.driver.OracleDriver.registerMBeans(OracleDriver.java:303)
    at oracle.jdbc.driver.OracleDriver$1.run(OracleDriver.java:213)
    at java.security.AccessController.doPrivileged(Native Method)
    at oracle.jdbc.driver.OracleDriver.<clinit>(OracleDriver.java:209)
    at oracle.jdbc.pool.OracleDataSource.<clinit>(OracleDataSource.java:94)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at com.feith.core.Host.getUserConnection(Host.java:82)
    at com.feith.core.FddSession.<init>(FddSession.java:96)
    at com.feith.userregistration.DatabaseSessionController.DBConnect(DatabaseSessionController.java:123)
    at com.feith.userregistration.DatabaseSessionController.<init>(DatabaseSessionController.java:59)
    at com.feith.userregistration.UserLogin.login(UserLogin.java:158)
    at com.feith.userregistration.UserLogin$1.buttonClick(UserLogin.java:95)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:508)
    at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:198)
    at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:161)
    at com.vaadin.server.AbstractClientConnector.fireEvent(AbstractClientConnector.java:969)
    at com.vaadin.ui.Button.fireClick(Button.java:355)
    at com.vaadin.ui.Button.click(Button.java:344)
    at com.vaadin.ui.Button$ClickShortcut.handleAction(Button.java:523)
    at com.vaadin.event.ActionManager.handleAction(ActionManager.java:235)
    at com.vaadin.event.ConnectorActionManager.handleAction(ConnectorActionManager.java:81)
    at com.vaadin.event.ActionManager.handleAction(ActionManager.java:230)
    at com.vaadin.event.ActionManager.handleActions(ActionManager.java:213)
    at com.vaadin.ui.UI.changeVariables(UI.java:353)
    at com.vaadin.server.communication.ServerRpcHandler.changeVariables(ServerRpcHandler.java:396)
    at com.vaadin.server.communication.ServerRpcHandler.handleBurst(ServerRpcHandler.java:221)
    at com.vaadin.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:111)
    at com.vaadin.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:91)
    at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:37)
    at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1382)
    at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:238)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Unknown Source)

Oracle稱 ,這是一個錯誤(BUG-6362104): JDBC驅動程序在加載時拋出MalformedObjectException或InstanceAlreadyExistsException。 嘗試再次從OTN下載驅動程序。 如果你想知道你是否有修補的jar運行:

java -jar ojdbc6.jar

未修補的jar打印

Oracle 11.1.0.6.0-Production JDBC 5.0 complied with JDK1.6

並打印修補的jar

Oracle 11.1.0.6.0-Production+ JDBC 5.0 complied with JDK1.6

請確保您擁有適用於Oracle DB版本的最新JDBC驅動程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM