I don't have a datasource defined at all at the server level. Somehow tcServer is picking up what's in a spring configuration and trying to make one. My server.xml is just the default plus one additional port for SSL. Context.xml has a few entries for CAS authentication and communication with another app, but no datasources.
I can see while debugging that the name of the datasource it tries to register in JMX (there's 2 actually) are the database names used in my spring configurations. I thought at first it was picking them up from the context file of another tcServer instance under the same root (that one does have datasources defined in context.xml), but I deleted that instance altogether and still get the same behavior.
Here's what I have defined in spring context:
Code:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${db.informix.driver}"/>
<property name="url" value="${db.informix.dburl}"/>
<property name="username" value="${db.informix.dbuser}"/>
<property name="password" value="${db.informix.dbpassword}"/>
<property name="testWhileIdle" value="true"/>
<property name="validationQuery" value="select first 1 1 from systables"/>
<property name="removeAbandoned" value="true"/>
<property name="removeAbandonedTimeout" value="60"/>
<property name="logAbandoned" value="true"/>
</bean>
<bean id="dataSourceRpt" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${db2.informix.driver}"/>
<property name="url" value="${db2.informix.dburl}"/>
<property name="username" value="${db.informix.dbuser}"/>
<property name="password" value="${db.informix.dbpassword}"/>
<property name="testWhileIdle" value="true"/>
<property name="validationQuery" value="select first 1 1 from systables"/>
<property name="removeAbandoned" value="true"/>
<property name="removeAbandonedTimeout" value="60"/>
<property name="logAbandoned" value="true"/>
</bean>
Context.xml
Code:
<?xml version="1.0"?>
<Context>
<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<!-- Uncomment this to disable session persistence across Tomcat restarts -->
<!--
<Manager pathname="" />
-->
<!-- Uncomment this to enable Comet connection tacking (provides events
on session expiration as well as webapp lifecycle) -->
<!--
<Valve className="org.apache.catalina.valves.CometConnectionManagerValve" />
-->
<!-- CAS server -->
<Environment description="" name="cas/serverName" override="false" type="java.lang.String" value="http://alexq.docmain.state.nm.us:8081"/>
<Environment description="" name="cas/AuthenticationFilter/casServerLoginUrl" override="false" type="java.lang.String" value="https://nmtcs3.docmain.state.nm.us:8443/cmisCAS/login"/>
<Environment description="" name="cas/casServerUrlPrefix" override="false" type="java.lang.String" value="https://nmtcs3.docmain.state.nm.us:8443/cmisCAS"/>
<Environment description="" name="cas/Saml11TicketValidationFilter/exceptionOnValidationFailure" override="false" type="java.lang.String" value="false"/>
<!--
<Environment description="" name="cas/AuthenticationFilter/casServerLoginUrl" override="false" type="java.lang.String" value="https://alexq.docmain.state.nm.us:8445/cmisCAS/login"/>
<Environment description="" name="cas/casServerUrlPrefix" override="false" type="java.lang.String" value="https://alexq.docmain.state.nm.us:8445/cmisCAS"/>
-->
<!-- Core App -->
<Environment description="" name="cmisCore/server" override="false" type="java.lang.String" value="https://alexq.docmain.state.nm.us:8081/cmisdev1112"/>
<Environment description="" name="cmisSentencingGoodtime/server" override="false" type="java.lang.String" value="http://alexq.docmain.state.nm.us:8083/cmisSentencingGoodtime"/>
</Context>
server.xml
Code:
<?xml version="1.0"?>
<Server port="${base.shutdown.port}"
shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.core.JasperListener"/>
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
<Listener className="com.springsource.tcserver.serviceability.deploy.TcContainerDeployer"/>
<Listener accessFile="${catalina.base}/conf/jmxremote.access"
authenticate="true"
bind="127.0.0.1"
className="com.springsource.tcserver.serviceability.rmi.JmxSocketListener"
passwordFile="${catalina.base}/conf/jmxremote.password"
port="${base.jmx.port}"
useSSL="false"/>
<GlobalNamingResources>
<Resource auth="Container"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
name="UserDatabase"
pathname="conf/tomcat-users.xml"
type="org.apache.catalina.UserDatabase"/>
</GlobalNamingResources>
<Service name="Catalina">
<Executor maxThreads="300"
minSpareThreads="50"
name="tomcatThreadPool"
namePrefix="tomcat-http--"/>
<Engine defaultHost="localhost"
name="Catalina">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host appBase="webapps"
autoDeploy="true"
deployOnStartup="true"
deployXML="true"
name="localhost"
unpackWARs="true">
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
pattern="%h %l %u %t "%r" %s %b"
prefix="localhost_access_log."
suffix=".txt"/>
</Host>
</Engine>
<Connector acceptCount="100"
connectionTimeout="20000"
executor="tomcatThreadPool"
maxKeepAliveRequests="15"
port="${bio.http.port}"
protocol="org.apache.coyote.http11.Http11Protocol"
redirectPort="${bio.https.port}"/>
<Connector port="${bio.https.port}" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
keystoreFile="c:/apps/portecle-1.7/keystore.jks"
keyAlias="tomcat" keystorePass="changeit"
clientAuth="false" sslProtocol="TLS" />
</Service>
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener"/>
</Server>