0

我可以从IntelliJ数据库控制台连接到oracle数据库,但无法从应用程序连接。这是我的应用程序属性

spring.datasource.url=jdbc:oracle:thin:@192.168.00.00:1521:ORCL
spring.数据源.username=
spring.datasource.password=密码

***@自动连线私有JdbcTemplate jdbcTempte;@GetMapping(“/api/bears/{empId}”)public int BearsCall(@PathVariable String empId){最终int[]r={0};//使用数组有效地完成r//活动,CWR,A:用户状态,人员状态,人员类型//用唯一标识符替换名称String userQuery=“SELECT extended1,extended2,extended 3”+“来自identityiq.spt_identity”+“WHERE name=?”;String hasRole=“SELECT COUNT(*)AS role_COUNT”+“来自identityiq.spt_identity_assigned_roles i”+“JOIN identityiq.spt_bundle b ON i.bundle=b.id”+“加入identityiq.spt_identity u ON i.identity_id=u.id”+“其中u.name=?”+“AND b.name='角色-基线标准访问用户'”;尝试{//查询用户对象[]参数={empId};jdbcTemplate.query(userQuery,params,(ResultSet rs)->{if(rs.next()){字符串adStatus=rs.getString(“extended2”)!=无效的?rs.getString(“extended2”):“未知”;if(!adStatus.equalsIgnoreCase(“未知”)){//查询角色计数int roleCount=jdbcTemplate.queryForObject(hasRole,Integer.class,empId);if(角色计数>0){r[0]=2;}}其他{r[0]=1;}}其他{r[0]=0;}});}catch(异常e){//处理异常e.printStackTrace();}返回r[0];}***

错误:

java.sql。SQLTimeoutException:ORA-12170:无法连接。主机192.168.00.00端口1521的TCP连接超时为30000ms。(连接ID=h6LYhOpKQ6SXelYm+4==)https://docs.oracle.com/error-help/db/ora-12170/在oracle.jdbc.driver上。T4CConnection.handleLogonNetException(T4CCconnection.java:1382)~[ojdbc8-23.0.23.09.jar:23.3.0.23.09]在oracle.jdbc.driver上。T4CConnection.logon(T4CCconnection.java:975)~[ojdbc8-23.3.023.09.jar:23.3.09]在oracle.jdbc.driver上。物理连接.connect(PhysicalConnection.java:1126)~[ojdbc8-23.0.23.09.jar:23.3.0.23.09]在oracle.jdbc.driver上。T4CDriverExtension.getConnection(T4CDRiverExtensation.java:104)~[ojdbc8-23.0.23.09.jar:23.3.0.23.09]在oracle.jdbc.driver上。OracleDriver.connect(OracleDriver.java:825)~[ojdbc8-23.30.23.09.jar:23.30.23.09]在oracle.jdbc.driver上。OracleDriver.connect(OracleDriver.java:651)~[ojdbc8-23.30.23.09.jar:23.30.23.09]位于com.zaxxer.hikari.util。DriverDataSource.getConnection(DriverDataSource.java:138)~[HikariCP-4.0.3.jar:na]在com.zaxxer.hikari.pool。PoolBase.newConnection(PoolBase.java:364)~[HikariCP-4.0.3.jar:na]在com.zaxxer.hikari.pool。PoolBase.newPoolEntry(PoolBase.java:206)~[HikariCP-4.0.3.jar:na]访问com.zaxxer.hikari.pool。HikariPool.createPoolEntry(HikariPool.java:476)~[HikariCP-4.0.3.jar:na]在com.zaxxer.hikari.pool。HikariPool.checkFailFast(HikariPool.java:561)~[HikariCP-4.0.3.jar:na]在com.zaxxer.hikari.pool。HikariPool公司。(HikariPool.java:115)~[HikariCP-4.0.3.jar:na]位于com.zaxxer.hikari.HikariDataSource.getConnection(HikariData Source.java:112)~[HikariCP-4.0.3.jar:na]在org.springframework.jdbc.datasource上。DataSourceUtils.fetchConnection(DataSourceUtils.java:159)~[spring-jdbc-5.3.15.jar:5.3.15]在org.springframework.jdbc.datasource上。DataSourceUtils.doGetConnection(DataSourceUils.java:117)~[spring-jdbc-5.3.15.jar:5.3.15]在org.springframework.jdbc.datasource上。DataSourceUtils.getConnection(DataSourceUils.java:80)~[spring-jdbc-5.3.15.jar:5.3.15]在org.springframework.jdbc.core上。JdbcTemplate.execute(JdbcTemplate.java:646)~[spring-jdbc-5.3.15.jar:5.3.15]在org.springframework.jdbc.core上。查询(JdbcTemplate.java:713)~[spring-jdbc-5.3.15.jar:5.3.15]在org.springframework.jdbc.core上。查询(JdbcTemplate.java:744)~[spring-jdbc-5.3.15.jar:5.3.15]在org.springframework.jdbc.core上。查询(JdbcTemplate.java:773)~[spring-jdbc-5.3.15.jar:5.3.15]在org.springframework.jdbc.core上。查询(JdbcTemplate.java:784)~[spring-jdbc-5.3.15.jar:5.3.15]在zephon公司。WebApp.controller.myController。BearsCall(myController.java:301)~[类/:na]位于java.base/jdk.internal.reflect。NativeMethodAccessorImpl.invoke0(本机方法)~[na:na]位于java.base/jdk.internal.reflect。调用(NativeMethodAccessorImpl.java:77)~[na:na]位于java.base/jdk.internal.reflect。委托MethodAccessorImpl.invoke(DelegatingMethodAccess Impl.java:43)~[na:na]位于java.base/java.lang.reflect。invoke方法(Method.java:568)~[na:na]在org.springframework.web.method.support上。调用句柄方法.doInvoke(InvocableHandlerMethod.java:205)~[spring-web-5.1.15.jar:5.3.15]在org.springframework.web.method.support上。InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)~[spring-web-5.3.15.jar:5.3.15]网址:org.springframework.web.servlet.mvc.method.annotation。ServletInvocableHandlerMethod.invokeAndHandle(ServletInvokableHandler方法.java:117)~[spring-webmvc-5.3.15.jar:5.3.15]网址:org.springframework.web.servlet.mvc.method.annotation。RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMapbingHandler适配器.java:895)~[spring-webmvc-5.3.15.jar:5.3.15]网址:org.springframework.web.servlet.mvc.method.annotation。RequestMappingHandlerAdapter.handleInternal(RequestMapbingHandler Adapter.java:808)~[spring-webmvc-5.3.15.jar:5.3.15]网址:org.springframework.web.servlet.mvc.method。AbstractHandlerMethodAdapter.handle(AbstracthandlerMethondAdapter.java:87)~[spring-webmvc-5.3.15.jar:5.3.15]网址:org.springframework.web.servlet。DispatcherServlet.doDispatch(Dispatcher Servlet.java:1067)~[spring-webmvc-5.3.15.jar:5.3.15]在org.springframework.web.servlet上。DispatcherServlet.doService(Dispatcher Servlet.java:963)~[spring-webmvc-5.3.15.jar:5.3.15]在org.springframework.web.servlet上。FrameworkServlet.processRequest(FrameworkServlet.java:1006)~[spring-webmvc-5.3.15.jar:5.3.15]网址:org.springframework.web.servlet。FrameworkServlet.doGet(FrameworkServlet.java:898)~[spring-webmvc-5.3.15.jar:5.3.15]在javax.servlet.http上。HttpServlet.service(HttpServlet.java:655)~[tomcat-embed-core-9.0.56.jar:4.0.FR]在org.springframework.web.servlet上。FrameworkServlet.service(FrameworkServlet.java:883)~[spring-webmvc-5.3.15.jar:5.3.15]在javax.servlet.http上。HttpServlet.service(HttpServlet.java:764)~[tomcat-embed-core-9.0.56.jar:4.0.FR]在org.apache.catalina.core。ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)~[tomcat-embed-core-9.0.56.jar:9.0.56]在org.apache.catalina.core。ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)~[tomcat-embed-core-9.0.56.jar:9.0.56]在org.apache.tomcat.websocket.server上。WsFilter.doFilter(WsFilter.java:53)~[tomcat-embed-websocket-9.0.56.jar:9.0.56]在org.apache.catalina.core。ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)~[tomcat-embed-core-9.0.56.jar:9.0.56]在org.apache.catalina.core。ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)~[tomcat-embed-core-9.0.56.jar:9.0.56]在org.springframework.web.filter上。RequestContextFilter.doFilterInternal(RequestContext Filter.java:100)~[spring-web-5.3.15.jar:5.3.15]在org.springframework.web.filter上。OncePerRequestFilter.doFilter(OncePer请求过滤器.java:117)~[spring-web-5.1.15.jar:5.3.15]在org.apache.catalina.core。ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)~[tomcat-embed-core-9.0.56.jar:9.0.56]在org.apache.catalina.core。ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)~[tomcat-embed-core-9.0.56.jar:9.0.56]在org.springframework.web.filter上。FormContentFilter.doFilterInternal(FormContentFisher.java:93)~[spring-web-5.3.15.jar:5.3.15]在org.springframework.web.filter上。OncePerRequestFilter.doFilter(OncePer请求过滤器.java:117)~[spring-web-5.1.15.jar:5.3.15]在org.apache.catalina.core。ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)~[tomcat-embed-core-9.0.56.jar:9.0.56]网址:org.apache.catalina.core。ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)~[tomcat-embed-core-9.0.56.jar:9.0.56]在org.springframework.web.filter上。CharacterEncodingFilter.doFilterInternal(CharacterCodingFilter.java:201)~[spring-web-5.1.15.jar:5.3.15]在org.springframework.web.filter上。OncePerRequestFilter.doFilter(OncePer请求过滤器.java:117)~[spring-web-5.1.15.jar:5.3.15]网址:org.apache.catalina.core。ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)~[tomcat-embed-core-9.0.56.jar:9.0.56]在org.apache.catalina.core。ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)~[tomcat-embed-core-9.0.56.jar:9.0.56]在org.apache.catalina.core。StandardWrapperValve.invoke(StandardWropperValve.java:197)~[tomcat-embed-core-9.0.56.jar:9.0.56]在org.apache.catalina.core。StandardContextValve.invoke(StandardContext Valve.java:97)~[tomcat-embed-core-9.0.56.jar:9.0.56]在org.apache.catalina.authenticator上。AuthenticatorBase.invoke(AuthentiatorBase.java:540)~[tomcat-embed-core-9.0.56.jar:9.0.56]在org.apache.catalina.core。StandardHostValve.invoke(StandardHostValve.java:135)~[tomcat-embed-core-9.0.56.jar:9.0.56]在org.apache.catalina.valves。ErrorReportValve.invoke(ErrorReportValve.java:92)~[tomcat-embed-core-9.0.56.jar:9.0.56]在org.apache.catalina.core。StandardEngineValve.invoke(StandardEngine Valve.java:78)~[tomcat-embed-core-9.0.56.jar:9.0.56]在org.apache.catalina.connector上。CoyoteAdapter.service(CoyoteAttapter.java:357)~[tomcat-embed-core-9.0.56.jar:9.0.56]位于org.apache.coyote.http11.Http11Processor.service(http11-Processor.java:382)~[tomcat-embed-core-9.0.56.jar:9.0.56]在org.apache.coyote上。进程(AbstractProcessorLight.java:65)~[tomcat-embed-core-9.0.56.jar:9.0.56]在org.apache.coyote上。抽象协议$ConnectionHandler.process(AbstractProtocol.java:895)~[tomcat-embed-core-9.0.56.jar:9.0.56]网址:org.apache.tomcat.util.net。NioEndpoint$SocketProcessor.doRun(NioEnppoint.java:1732)~[tomcat-embed-core-9.0.56.jar:9.0.56]网址:org.apache.tomcat.util.net。run(SocketProcessorBase.java:49)~[tomcat-embed-core-9.0.56.jar:9.0.56]在org.apache.tomcat.util.threads上。线程池执行器.runWorker(ThreadPoolExecutor.java:1191)~[tomcat-embed-core-9.0.56.jar:9.0.56]在org.apache.tomcat.util.threads上。线程池执行器$Worker.run(ThreadPoolExecutor.java:659)~[tomcat-embed-core-9.0.56.jar:9.0.56]在org.apache.tomcat.util.threads上。TaskThread$WrappingRunnable.run(TaskThread.java:61)~[tomcat-embed-core-9.0.56.jar:9.0.56]位于java.base/java.lang.Thread.run(Thread.java:840)~[na:na]原因:oracle.net.ns。NetException:ORA-12170:无法连接。主机192.168.00.00端口1521的TCP连接超时为30000ms。(连接ID=h6LYhOpKQ6SXelYm==)

1答案1

重置为默认值
0
  • 使用JdbcTemplate时,缺少DataSource或DB Connection元信息。
    • 使用JdbcTemplate时,请执行DataSource的依赖注入。
    • DataSource是一个包含与数据库相关的连接信息的对象,负责连接到数据库服务器。
    • Spring Boot从诸如application.properties之类的元数据文件中检索与数据库相关的信息,并创建一个DataSource bean。
  • 另一个注意事项:在控制器层执行所有逻辑并不是一个好主意。
    • 请参阅3层体系结构。
  • 下面附有对相关零件进行修改的示例代码。
//@自动接线私有最终JdbcTemplate jdbcTempte;//建造师DI公共JdbcTemplate(DataSource DataSource){this.jdbcTemplate=新的JdbcTempte(数据源);}@GetMapping(“/api/bears/{empId}”)public int BearsCall(@PathVariable String empId){最终int[]r={0};//使用数组使r有效地成为最终值//活动,CWR,A:用户状态,人员状态,人员类型//用唯一标识符替换名称String userQuery=“SELECT extended1,extended2,extended 3”+“来自identityiq.spt_identity”+“WHERE name=?”;String hasRole=“SELECT COUNT(*)AS role_COUNT”+“来自identityiq.spt_identity_assigned_roles i”+“JOIN identityiq.spt_bundle b ON i.bundle=b.id”+“在i.identity_id=u.id上加入identityiq.spt_id u”+“其中u.name=?”+“AND b.name='角色-基线标准访问用户'”;尝试{//查询用户对象[]参数={empId};jdbcTemplate.query(userQuery,params,(ResultSet-rs)->{if(rs.next()){字符串adStatus=rs.getString(“extended2”)!=无效的?rs.getString(“extended2”):“未知”;if(!adStatus.equalsIgnoreCase(“未知”)){//查询角色计数int roleCount=jdbcTemplate.queryForObject(hasRole,Integer.class,empId);if(角色计数>0){r[0]=2;}}其他{r[0]=1;}}其他{r[0]=0;}});}catch(异常e){//处理异常e.printStackTrace();}返回r[0];}

我希望它能有所帮助:)

1
  • 谢谢你的提示。在我的例子中,我最终不得不将服务器添加到etc/hosts才能进行连接。
    – 迪瓦斯
    评论 3月19日23:16

您的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.