Tomcat resource JNDI to mysql non default port, Spring Web app -
i have configured resource in server.xml:
<resource name="readconnection" auth="container" type="javax.sql.datasource" username="user" password="pass" url="jdbc:mysql://adresip:7777/database" driverclassname="com.mysql.jdbc.driver" initialsize="20" maxwait="5000" maxactive="500" maxidle="50" validationquery="select 1" poolpreparedstatements="true" removeabandoned="true" />
i'm using non-default port: 7777.
in front of mysql database there haproxy accept connection on port 7777 , forward connection mysql instance (on standard port, other ip)
problem is: - can connect mysql database via port 7777 using mysql workbanch - webapp cannot connect via 7777 if change in haproxy port 7777 3306 web app can connect database(via haproxy) - without changes in readconnection resource (?!)
configuration of datasource
<bean id="readdatasource" class="org.springframework.jndi.jndiobjectfactorybean"> <property name="jndiname" value="readconnection" /> <property name="resourceref" value="true" /> <property name="lookuponstartup" value="true" /> <property name="cache" value="true" /> <property name="proxyinterface" value="javax.sql.datasource" /> </bean>
its spring web app.
any ideas why web app cannot connect via non standard port?
exception 'standard': java.sql.sqlexception: cannot create poolableconnectionfactory
stack trace:
29-may-2015 23:08:28.615 warning [main] org.apache.naming.namingcontext.lookup unexpected exception resolving reference java.sql.sqlexception: cannot create poolableconnectionfactory (communications link failure last packet sent server 0 milliseconds ago. driver has not received packets server.) @ org.apache.tomcat.dbcp.dbcp2.basicdatasource.createpoolableconnectionfactory(basicdatasource.java:2152) @ org.apache.tomcat.dbcp.dbcp2.basicdatasource.createdatasource(basicdatasource.java:1902) @ org.apache.tomcat.dbcp.dbcp2.basicdatasource.getlogwriter(basicdatasource.java:1467) @ org.apache.tomcat.dbcp.dbcp2.basicdatasourcefactory.createdatasource(basicdatasourcefactory.java:439) @ org.apache.tomcat.dbcp.dbcp2.basicdatasourcefactory.getobjectinstance(basicdatasourcefactory.java:182) @ org.apache.naming.factory.factorybase.getobjectinstance(factorybase.java:94) @ javax.naming.spi.namingmanager.getobjectinstance(namingmanager.java:321) @ org.apache.naming.namingcontext.lookup(namingcontext.java:841) @ org.apache.naming.namingcontext.lookup(namingcontext.java:166) @ org.apache.catalina.core.namingcontextlistener.addresource(namingcontextlistener.java:1084) @ org.apache.catalina.core.namingcontextlistener.createnamingcontext(namingcontextlistener.java:663) @ org.apache.catalina.core.namingcontextlistener.lifecycleevent(namingcontextlistener.java:256) @ org.apache.catalina.util.lifecyclesupport.firelifecycleevent(lifecyclesupport.java:117) @ org.apache.catalina.util.lifecyclebase.firelifecycleevent(lifecyclebase.java:90) @ org.apache.catalina.core.standardserver.startinternal(standardserver.java:752) @ org.apache.catalina.util.lifecyclebase.start(lifecyclebase.java:150) @ org.apache.catalina.startup.catalina.start(catalina.java:625) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:57) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) @ java.lang.reflect.method.invoke(method.java:606) @ org.apache.catalina.startup.bootstrap.start(bootstrap.java:351) @ org.apache.catalina.startup.bootstrap.main(bootstrap.java:485) caused by: com.mysql.jdbc.exceptions.jdbc4.communicationsexception: communications link failure last packet sent server 0 milliseconds ago. driver has not received packets server. @ sun.reflect.nativeconstructoraccessorimpl.newinstance0(native method) @ sun.reflect.nativeconstructoraccessorimpl.newinstance(nativeconstructoraccessorimpl.java:57) @ sun.reflect.delegatingconstructoraccessorimpl.newinstance(delegatingconstructoraccessorimpl.java:45) @ java.lang.reflect.constructor.newinstance(constructor.java:526) @ com.mysql.jdbc.util.handlenewinstance(util.java:406) @ com.mysql.jdbc.sqlerror.createcommunicationsexception(sqlerror.java:1074) @ com.mysql.jdbc.connectionimpl.createnewio(connectionimpl.java:2209) @ com.mysql.jdbc.connectionimpl.<init>(connectionimpl.java:776) @ com.mysql.jdbc.jdbc4connection.<init>(jdbc4connection.java:46) @ sun.reflect.nativeconstructoraccessorimpl.newinstance0(native method) @ sun.reflect.nativeconstructoraccessorimpl.newinstance(nativeconstructoraccessorimpl.java:57) @ sun.reflect.delegatingconstructoraccessorimpl.newinstance(delegatingconstructoraccessorimpl.java:45) @ java.lang.reflect.constructor.newinstance(constructor.java:526) @ com.mysql.jdbc.util.handlenewinstance(util.java:406) @ com.mysql.jdbc.connectionimpl.getinstance(connectionimpl.java:352) @ com.mysql.jdbc.nonregisteringdriver.connect(nonregisteringdriver.java:284) @ org.apache.tomcat.dbcp.dbcp2.driverconnectionfactory.createconnection(driverconnectionfactory.java:38) @ org.apache.tomcat.dbcp.dbcp2.poolableconnectionfactory.makeobject(poolableconnectionfactory.java:204) @ org.apache.tomcat.dbcp.dbcp2.basicdatasource.validateconnectionfactory(basicdatasource.java:2162) @ org.apache.tomcat.dbcp.dbcp2.basicdatasource.createpoolableconnectionfactory(basicdatasource.java:2148) ... 22 more caused by: com.mysql.jdbc.exceptions.jdbc4.communicationsexception: communications link failure last packet sent server 0 milliseconds ago. driver has not received packets server. @ sun.reflect.nativeconstructoraccessorimpl.newinstance0(native method) @ sun.reflect.nativeconstructoraccessorimpl.newinstance(nativeconstructoraccessorimpl.java:57) @ sun.reflect.delegatingconstructoraccessorimpl.newinstance(delegatingconstructoraccessorimpl.java:45) @ java.lang.reflect.constructor.newinstance(constructor.java:526) @ com.mysql.jdbc.util.handlenewinstance(util.java:406) @ com.mysql.jdbc.sqlerror.createcommunicationsexception(sqlerror.java:1074) @ com.mysql.jdbc.mysqlio.<init>(mysqlio.java:343) @ com.mysql.jdbc.connectionimpl.createnewio(connectionimpl.java:2132) ... 35 more caused by: java.net.connectexception: connection refused: connect @ java.net.dualstackplainsocketimpl.connect0(native method) @ java.net.dualstackplainsocketimpl.socketconnect(dualstackplainsocketimpl.java:79) @ java.net.abstractplainsocketimpl.doconnect(abstractplainsocketimpl.java:339) @ java.net.abstractplainsocketimpl.connecttoaddress(abstractplainsocketimpl.java:200) @ java.net.abstractplainsocketimpl.connect(abstractplainsocketimpl.java:182) @ java.net.plainsocketimpl.connect(plainsocketimpl.java:172) @ java.net.sockssocketimpl.connect(sockssocketimpl.java:392) @ java.net.socket.connect(socket.java:579) @ java.net.socket.connect(socket.java:528) @ java.net.socket.<init>(socket.java:425) @ java.net.socket.<init>(socket.java:241) @ com.mysql.jdbc.standardsocketfactory.connect(standardsocketfactory.java:253) @ com.mysql.jdbc.mysqlio.<init>(mysqlio.java:292) ... 36 more 29-may-2015 23:08:28.623 warning [main] org.apache.catalina.core.namingcontextlistener.addresource failed register in jmx: javax.naming.namingexception: cannot create poolableconnectionfactory (communications link failure last packet sent server 0 milliseconds ago. driver has not received packets server.) 29-may-2015 23:08:29.706 warning [main] org.apache.naming.namingcontext.lookup unexpected exception resolving reference java.sql.sqlexception: cannot create poolableconnectionfactory (communications link failure last packet sent server 0 milliseconds ago. driver has not received packets server.) @ org.apache.tomcat.dbcp.dbcp2.basicdatasource.createpoolableconnectionfactory(basicdatasource.java:2152) @ org.apache.tomcat.dbcp.dbcp2.basicdatasource.createdatasource(basicdatasource.java:1902) @ org.apache.tomcat.dbcp.dbcp2.basicdatasource.getlogwriter(basicdatasource.java:1467) @ org.apache.tomcat.dbcp.dbcp2.basicdatasourcefactory.createdatasource(basicdatasourcefactory.java:439) @ org.apache.tomcat.dbcp.dbcp2.basicdatasourcefactory.getobjectinstance(basicdatasourcefactory.java:182) @ org.apache.naming.factory.factorybase.getobjectinstance(factorybase.java:94) @ javax.naming.spi.namingmanager.getobjectinstance(namingmanager.java:321) @ org.apache.naming.namingcontext.lookup(namingcontext.java:841) @ org.apache.naming.namingcontext.lookup(namingcontext.java:166) @ org.apache.catalina.core.namingcontextlistener.addresource(namingcontextlistener.java:1084) @ org.apache.catalina.core.namingcontextlistener.createnamingcontext(namingcontextlistener.java:663) @ org.apache.catalina.core.namingcontextlistener.lifecycleevent(namingcontextlistener.java:256) @ org.apache.catalina.util.lifecyclesupport.firelifecycleevent(lifecyclesupport.java:117) @ org.apache.catalina.util.lifecyclebase.firelifecycleevent(lifecyclebase.java:90) @ org.apache.catalina.core.standardserver.startinternal(standardserver.java:752) @ org.apache.catalina.util.lifecyclebase.start(lifecyclebase.java:150) @ org.apache.catalina.startup.catalina.start(catalina.java:625) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:57) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) @ java.lang.reflect.method.invoke(method.java:606) @ org.apache.catalina.startup.bootstrap.start(bootstrap.java:351) @ org.apache.catalina.startup.bootstrap.main(bootstrap.java:485) caused by: com.mysql.jdbc.exceptions.jdbc4.communicationsexception: communications link failure last packet sent server 0 milliseconds ago. driver has not received packets server. @ sun.reflect.nativeconstructoraccessorimpl.newinstance0(native method) @ sun.reflect.nativeconstructoraccessorimpl.newinstance(nativeconstructoraccessorimpl.java:57) @ sun.reflect.delegatingconstructoraccessorimpl.newinstance(delegatingconstructoraccessorimpl.java:45) @ java.lang.reflect.constructor.newinstance(constructor.java:526) @ com.mysql.jdbc.util.handlenewinstance(util.java:406) @ com.mysql.jdbc.sqlerror.createcommunicationsexception(sqlerror.java:1074) @ com.mysql.jdbc.connectionimpl.createnewio(connectionimpl.java:2209) @ com.mysql.jdbc.connectionimpl.<init>(connectionimpl.java:776) @ com.mysql.jdbc.jdbc4connection.<init>(jdbc4connection.java:46) @ sun.reflect.nativeconstructoraccessorimpl.newinstance0(native method) @ sun.reflect.nativeconstructoraccessorimpl.newinstance(nativeconstructoraccessorimpl.java:57) @ sun.reflect.delegatingconstructoraccessorimpl.newinstance(delegatingconstructoraccessorimpl.java:45) @ java.lang.reflect.constructor.newinstance(constructor.java:526) @ com.mysql.jdbc.util.handlenewinstance(util.java:406) @ com.mysql.jdbc.connectionimpl.getinstance(connectionimpl.java:352) @ com.mysql.jdbc.nonregisteringdriver.connect(nonregisteringdriver.java:284) @ org.apache.tomcat.dbcp.dbcp2.driverconnectionfactory.createconnection(driverconnectionfactory.java:38) @ org.apache.tomcat.dbcp.dbcp2.poolableconnectionfactory.makeobject(poolableconnectionfactory.java:204) @ org.apache.tomcat.dbcp.dbcp2.basicdatasource.validateconnectionfactory(basicdatasource.java:2162) @ org.apache.tomcat.dbcp.dbcp2.basicdatasource.createpoolableconnectionfactory(basicdatasource.java:2148) ... 22 more caused by: com.mysql.jdbc.exceptions.jdbc4.communicationsexception: communications link failure last packet sent server 0 milliseconds ago. driver has not received packets server. @ sun.reflect.nativeconstructoraccessorimpl.newinstance0(native method) @ sun.reflect.nativeconstructoraccessorimpl.newinstance(nativeconstructoraccessorimpl.java:57) @ sun.reflect.delegatingconstructoraccessorimpl.newinstance(delegatingconstructoraccessorimpl.java:45) @ java.lang.reflect.constructor.newinstance(constructor.java:526) @ com.mysql.jdbc.util.handlenewinstance(util.java:406) @ com.mysql.jdbc.sqlerror.createcommunicationsexception(sqlerror.java:1074) @ com.mysql.jdbc.mysqlio.<init>(mysqlio.java:343) @ com.mysql.jdbc.connectionimpl.createnewio(connectionimpl.java:2132) ... 35 more caused by: java.net.connectexception: connection refused: connect @ java.net.dualstackplainsocketimpl.connect0(native method) @ java.net.dualstackplainsocketimpl.socketconnect(dualstackplainsocketimpl.java:79) @ java.net.abstractplainsocketimpl.doconnect(abstractplainsocketimpl.java:339) @ java.net.abstractplainsocketimpl.connecttoaddress(abstractplainsocketimpl.java:200) @ java.net.abstractplainsocketimpl.connect(abstractplainsocketimpl.java:182) @ java.net.plainsocketimpl.connect(plainsocketimpl.java:172) @ java.net.sockssocketimpl.connect(sockssocketimpl.java:392) @ java.net.socket.connect(socket.java:579) @ java.net.socket.connect(socket.java:528) @ java.net.socket.<init>(socket.java:425) @ java.net.socket.<init>(socket.java:241) @ com.mysql.jdbc.standardsocketfactory.connect(standardsocketfactory.java:253) @ com.mysql.jdbc.mysqlio.<init>(mysqlio.java:292) ... 36 more
besides of readconnetcion resource, have writeconnection resource similiar readconnection, point different port.
i checked sure - when changed port on haproxy side 3306 , run web app again (without changes in connection resources) working fine.
Comments
Post a Comment