设为首页 收藏本站
查看: 528|回复: 0

[经验分享] 配置了derby数据库后启动tomcat 服务报错

[复制链接]

尚未签到

发表于 2017-2-6 06:08:10 | 显示全部楼层 |阅读模式
  在本应用中由于是以derby数据库作为数据存储,采用网络连接方式连接derby,在启动tomcat 服务是进行一些数据库的初始化工作,比如创建表之类的。
  所以就特地创建了一个servlet 去做这些初始化工作。
  在web.xml中配置如下:
  <web-app>
  ...
  <servlet>
  <servlet-name>derbynet</servlet-name>
  <servlet-class>org.apache.derby.drda.NetServlet</servlet-class>
  <init-param>
  <param-name>startNetworkServerOnInit</param-name>
  <param-value>true</param-value>
  <description>Starts the Network Server at servlet
  initialization if 'true'. </description>
  </init-param>
  <init-param>
  <param-name>portNumber</param-name>
  <param-value>1527</param-value>
  <description>Port number to use. The default is 1527.</description>
  </init-param>
  <init-param>
  <param-name>host</param-name>
  <param-value>localhost</param-value>
  <description> Host Name to use. The default is "localhost". Please secure any server which listens on a public address. </description>
  </init-param>
  <init-param>
  <param-name>tracingDirectory</param-name>
  <param-value />
  <description>Directory where trace files should be placed. </description>
  </init-param>
  <load-on-startup>true</load-on-startup>
  </servlet>
  <servlet>
  <servlet-name>InitializeDatabase</servlet-name>
  <servlet-class>com.sap.pf.prp.servlet.InitializeDatabase</servlet-class>
  <load-on-startup>0</load-on-startup>
  </servlet>
  ...
  </web-app>
  一切妥当之后,在eclipse下启动tomcat 服务,一切正常。
  但是当我启动tomcat目录下的startup.bat时,就报错了,信息如下:
  java.sql.SQLNonTransientConnectionException: java.net.ConnectException : Error c
  onnecting to server localhost on port 1527 with message Connection refused: conn
  ect.
  at org.apache.derby.client.am.SQLExceptionFactory40.getSQLException(Unkn
  own Source)
  at org.apache.derby.client.am.SqlException.getSQLException(Unknown Sourc
  e)
  at org.apache.derby.jdbc.ClientDriver.connect(Unknown Source)
  at java.sql.DriverManager.getConnection(DriverManager.java:582)
  at java.sql.DriverManager.getConnection(DriverManager.java:185)
  at com.sap.pf.prp.db.DBManager.getConnection(DBManager.java:56)
  at com.sap.pf.prp.db.DBManager.initDB(DBManager.java:27)
  at com.sap.pf.prp.servlet.InitializeDatabase.init(InitializeDatabase.jav
  a:13)
  at javax.servlet.GenericServlet.init(GenericServlet.java:212)
  at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.
  java:1139)
  at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:96
  6)
  at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContex
  t.java:3956)
  at org.apache.catalina.core.StandardContext.start(StandardContext.java:4
  230)
  at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
  at org.apache.catalina.core.StandardHost.start(StandardHost.java:736)
  at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
  at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443
  )
  at org.apache.catalina.core.StandardService.start(StandardService.java:4
  48)
  at org.apache.catalina.core.StandardServer.start(StandardServer.java:700
  )
  at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
  java:39)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
  sorImpl.java:25)
  at java.lang.reflect.Method.invoke(Method.java:597)
  at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295)
  at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)
  Caused by: org.apache.derby.client.am.DisconnectException: java.net.ConnectExcep
  tion : Error connecting to server localhost on port 1527 with message Connection
  refused: connect.
  at org.apache.derby.client.net.NetAgent.<init>(Unknown Source)
  at org.apache.derby.client.net.NetConnection.newAgent_(Unknown Source)
  at org.apache.derby.client.am.Connection.<init>(Unknown Source)
  at org.apache.derby.client.net.NetConnection.<init>(Unknown Source)
  at org.apache.derby.client.net.NetConnection40.<init>(Unknown Source)
  at org.apache.derby.client.net.ClientJDBCObjectFactoryImpl40.newNetConne
  ction(Unknown Source)
  ... 24 more
  Caused by: java.net.ConnectException: Connection refused: connect
  at java.net.PlainSocketImpl.socketConnect(Native Method)
  at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
  at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
  at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
  at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
  at java.net.Socket.connect(Socket.java:529)
  at java.net.Socket.connect(Socket.java:478)
  at java.net.Socket.<init>(Socket.java:375)
  at java.net.Socket.<init>(Socket.java:189)
  at javax.net.DefaultSocketFactory.createSocket(SocketFactory.java:206)
  at org.apache.derby.client.net.OpenSocketAction.run(Unknown Source)
  at java.security.AccessController.doPrivileged(Native Method)
  ... 30 more
  Feb 11, 2015 1:34:10 PM org.apache.coyote.http11.Http11BaseProtocol start
  INFO: Starting Coyote HTTP/1.1 on http-80
  在网上搜了好一阵子,都没有找到真正的解决办法。
  https://db.apache.org/derby/docs/10.4/adminguide/tadmincbdjhhfd.html
  http://db.apache.org/derby/papers/DerbyTut/ns_intro.html
  http://stackoverflow.com/questions/10420902/data-sources-derby-connection-refused
  最后经过仔细的排查,发现其实是我自己的web.xml配置中【servlet启动优先级设置】的问题。
  只需要将derbynet中:
  <load-on-startup>true</load-on-startup> =====> <load-on-startup>0</load-on-startup>
  再将初始化数据库的那个servlet的load-on-startup 改为1 即:
  <load-on-startup>0</load-on-startup> ====> <load-on-startup>1</load-on-startup>
  改完了之后重新发布启动tomcat,一切正常。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-337936-1-1.html 上篇帖子: 服务器证书安装配置指南(Tomcat 6) 下篇帖子: 浅析Tomcat原理(一个简单的web应用服务器)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表