2012-06-29 12 views
5

tôi có cấu hình cơ sở dữ liệu oracle trong server.xml của tomcatcung cấp tên người dùng và mật khẩu chính xác, nhận được ORA-01017: tên người dùng/mật khẩu không hợp lệ; đăng nhập bị từ chối

<Resource name="jdbc/sgfdb" auth="Container" 
      driverClassName="oracle.jdbc.OracleDriver" 
      url="jdbc:oracle:thin:@databaseurl:1521:schema" 
      username="username" password="password" maxActive="20" maxIdle="10" 
      maxWait="-1" 
      factory="oracle.jdbc.pool.OracleDataSourceFactory" 
      type="oracle.jdbc.pool.OracleDataSource"/> 

Sau đó, trong ứng dụng web của tôi (dự án MVC mùa xuân), i declear này trong context.xml

<Context> 
<ResourceLink name="jdbc/sgfdb" 
     global="jdbc/sgfdb" 
     type="javax.sql.DataSource"/> 
</Context> 

tôi đã có thể kết nối với cơ sở dữ liệu này trước đây. Tôi không làm việc đó trong một tuần. Sau đó, bây giờ khi tôi cố gắng để bắt đầu nó, luôn luôn nhận được:

SEVERE: Servlet.service() for servlet [action] in context with path [/WebUI] threw exception [Request processing failed; nested exception is javax.persistence.QueryTimeoutException: Could not open connection] with root cause 
**java.sql.SQLException: ORA-01017: invalid username/password; logon denied** 

at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:440) 
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:389) 
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:382) 
at oracle.jdbc.driver.T4CTTIfun.processError(T4CTTIfun.java:573) 
at oracle.jdbc.driver.T4CTTIoauthenticate.processError(T4CTTIoauthenticate.java:431) 
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:445) 
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:191) 
at oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.java:366) 
at oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.java:752) 
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:366) 
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:536) 
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:228) 
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32) 
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:521) 
at oracle.jdbc.pool.OracleDataSource.getPhysicalConnection(OracleDataSource.java:280) 
at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:207) 
at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:157) 
at org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider.getConnection(InjectedDataSourceConnectionProvider.java:70) 
at org.hibernate.internal.AbstractSessionImpl$NonContextualJdbcConnectionAccess.obtainConnection(AbstractSessionImpl.java:278) 
at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:297) 
at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.getConnection(LogicalConnectionImpl.java:169) 
at org.hibernate.engine.jdbc.internal.proxy.ConnectionProxyHandler.extractPhysicalConnection(ConnectionProxyHandler.java:82) 
at org.hibernate.engine.jdbc.internal.proxy.ConnectionProxyHandler.continueInvocation(ConnectionProxyHandler.java:138) 
at org.hibernate.engine.jdbc.internal.proxy.AbstractProxyHandler.invoke(AbstractProxyHandler.java:81) 
at $Proxy36.prepareStatement(Unknown Source) 
at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$5.doPrepare(StatementPreparerImpl.java:147) 
at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:166) 
at org.hibernate.engine.jdbc.internal.StatementPreparerImpl.prepareQueryStatement(StatementPreparerImpl.java:145) 
at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1720) 
at org.hibernate.loader.Loader.doQuery(Loader.java:828) 
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:289) 
at org.hibernate.loader.Loader.doList(Loader.java:2447) 
at org.hibernate.loader.Loader.doList(Loader.java:2433) 
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2263) 
at org.hibernate.loader.Loader.list(Loader.java:2258) 
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:470) 
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:355) 
at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:195) 
at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1215) 
at org.hibernate.internal.QueryImpl.list(QueryImpl.java:101) 
at org.hibernate.ejb.QueryImpl.getSingleResult(QueryImpl.java:284) 
at org.hibernate.ejb.criteria.CriteriaQueryCompiler$3.getSingleResult(CriteriaQueryCompiler.java:258) 
at mycompany.services.impl.JobServiceImpl.getNumberOfJobs(JobServiceImpl.java:51) 
at mycompany.controller.ExecJobController.execJobList(ExecJobController.java:78) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:213) 
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126) 
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96) 
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617) 
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578) 
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80) 
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923) 
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852) 
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) 
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) 
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999) 
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565) 
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307) 
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
at java.lang.Thread.run(Thread.java:662) 

Tôi chắc chắn tên người dùng và mật khẩu là chính xác. Có ai vui lòng cho tôi một số gợi ý về những gì đang xảy ra ở đây không?

+0

Tại sao bạn tin rằng mật khẩu chính xác? Nếu mã hoạt động trong quá khứ và mã không bị thay đổi, suy luận logic là mật khẩu phải thay đổi.Có lẽ mật khẩu không thay đổi nhưng DBA cho phép mật khẩu phân biệt chữ hoa chữ thường để mật khẩu bạn đã lưu trữ không chính xác. –

+0

Tôi hiện đang sử dụng cơ sở dữ liệu này. Tôi có thể sử dụng mật khẩu này để kết nối từ nhà phát triển sql trên cùng một máy ngay bây giờ! Cảm ơn bạn –

+0

Kết nối trong SQL Developer được định cấu hình như thế nào? Bạn đang sử dụng kết nối cơ bản? Một kết nối TNS? Thứ gì khác? Khi bạn đăng URL JDBC mà ứng dụng của bạn đang sử dụng, bạn đã vô tình gõ 'schema', nơi bạn có nghĩa là' tên dịch vụ'-- 'jdbc: oracle: thin: @databaseurl: 1521: schema' phải là' jdbc: oracle: thin: @databaseurl: 1521: tên dịch vụ'. Lỗi bạn nhận được cho biết tên người dùng và mật khẩu không chính xác. Hoặc mật khẩu không chính xác, tên người dùng không chính xác hoặc bạn đang cố gắng kết nối với cơ sở dữ liệu sai. –

Trả lời

2

Đã giải quyết. Vấn đề là tôi không nên sử dụng

factory="oracle.jdbc.pool.OracleDataSourceFactory" 

Sau khi xóa, nó hoạt động tốt!

+1

đây là đâu ??, trong đó tập tin tôi có thể tìm thấy nó? – rainman

+0

@rainman tìm kiếm trang này –

1

có thể là người dùng mà bạn đang cố gắng đăng nhập có một mật khẩu hết hạn

+0

Tôi thực sự chắc chắn đó là mật khẩu hoạt động. Bên cạnh dự án web này, tôi vẫn đang sử dụng nó trong một số dự án khác. Cảm ơn!!! –

1
  • Tên người dùng có thể không chính xác.
  • Mật khẩu có thể không chính xác.
  • Máy chủ/cá thể bạn đang kết nối đến có thể không chính xác hoặc khác nhau giữa máy và máy chủ của bạn hoặc giữa ứng dụng và Nhà phát triển SQL.
  • Cơ sở dữ liệu có thể được định cấu hình để sử dụng mật khẩu nhạy cảm với chữ hoa chữ thường.
  • Mật khẩu có thể chứa dấu chấm phẩy ; ký tự khiến chuỗi kết nối bị cắt bớt khi ứng dụng tạo chuỗi kết nối, nhưng cho phép bạn sử dụng nó từ SQL Developer (?)
  • Bạn có thể có lỗi đánh máy ở đâu đó (?)
+1

Tôi chắc chắn 180% tên người dùng là chính xác, mật khẩu là đúng, Url là chính xác (Tôi không đưa url của tôi ở đây). Tôi có thể kết nối từ nhà phát triển sql với cùng url, tên người dùng, mật khẩu. Tôi đã chỉ tự hỏi vì tôi đã cấu hình db trong tomcat, có cái gì đó trong cấu hình của tôi đi sai hay bất cứ điều gì? Nhưng mọi người chỉ cảm thấy tôi không cung cấp tên người dùng/mật khẩu chính xác. Nào!!!!!! Đó là cơ bản, làm thế nào mọi người sẽ nỗ lực để đăng câu hỏi trước khi họ làm kiểm tra cơ bản đầu tiên! –

6

Chỉ cần giải quyết một vấn đề tương tự như vậy. Nếu một cơ sở dữ liệu 11g được cấu hình cho các mật khẩu nhạy cảm, nhưng bạn đang cố gắng kết nối bằng ứng dụng khách 10g, máy khách 10g sẽ gửi mật khẩu tất cả trong trường hợp trên tới cơ sở dữ liệu, do đó mật khẩu không hợp lệ khi mật khẩu bạn đã nhập rõ ràng chính xác. Vì vậy, bạn cần nâng cấp ứng dụng khách lên 11g để gửi mật khẩu đúng trường hợp (nhưng để kiểm tra nhanh, bạn có thể thay đổi mật khẩu của mình thành tất cả trường hợp trên và bạn có thể kết nối).

+0

11g hiện được hỗ trợ. Tất cả những gì bạn phải làm là sử dụng 'org.hibernate.dialect.Oracle10gDialect' – abhi

1

Nếu mật khẩu và tên người dùng của bạn là chữ thường và chế độ chữ hoa của chúng có giá trị khác (như i, İ ở Thổ Nhĩ Kỳ), điều này có thể gây ra sự cố. Một số thư viện kết nối Java-Oracle làm cho chúng trở thành chữ hoa mà không xem sự khác biệt về văn hóa.

1

Bumped vào chủ đề này bởi vì tôi đã phải đối mặt với cùng một vấn đề. Tên người dùng và mật khẩu hoàn hảo. Đã có thể đăng nhập bằng cách sử dụng các thông tin đăng nhập trong SQLPlus và từ các ứng dụng khác. Datasource.url cũng hoàn hảo.

Trong khi phân tích lỗi, thấy rằng ojdbc6.jar mà tôi đang sử dụng đang cố gắng kết nối với Oracle 11.1.0.7 trong khi Oracle của tôi là 11.2.0.4. Tải xuống ojdbc6.jar mới nhất và cố gắng kết nối và thì đấy!