Hello,
I have deployed my aplication like this:
oc new-app --name myadmin
jboss-webserver30-tomcat7-openshift~http://<...>MYADMIN.git
I set the following environment variable:
oc env dc/myadmin MYADMINDB_PORT=3306
And i check that the environment variable is set:
oc get pods
NAME READY STATUS RESTARTS AGE
myadmin-4-x2kw7 1/1 Running 0 1m
myadmindb-2-8jc15 1/1 Running 0 2h
oc env pods/myadmin-4-x2kw7 --list
# pods myadmin-4-x2kw7, container myadmin
MYADMINDB_PORT=3306
In my Java proyect, i have the file:
configuration/context.xml
with the following JNDI datasource definition:
<Resource name="jdbc/myadmin1"
url="jdbc:mysql://myadmindb:${MYADMINDB_PORT}/myadmin"
driverClassName="com.mysql.jdbc.Driver"
username="myiadminuser"
password="myadminpass"
auth="Container"
type="javax.sql.DataSource"
maxActive="20"
maxIdle="5"
maxWait="10000"
/>
When i deploy the POD the logs are:
...
Caused by:
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:
Cannot load connection class because of underlying exception:
'java.lang.NumberFormatException: For input string:
"${MYADMINDB_PORT}"'.
at
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method)
at
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at
java.lang.reflect.Constructor.newInstance(Constructor.java:422)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.Util.getInstance(Util.java:386)
at
com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1015)
at
com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)
at
com.mysql.jdbc.SQLError.createSQLException(SQLError.java:975)
at
com.mysql.jdbc.SQLError.createSQLException(SQLError.java:920)
at
com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:359)
at
org.apache.tomcat.dbcp.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38)
at
org.apache.tomcat.dbcp.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582)
at
org.apache.tomcat.dbcp.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1558)
at
org.apache.tomcat.dbcp.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1547)
... 117 more
Caused by: java.lang.NumberFormatException: For input string:
"${MYADMINDB_PORT}"
at
java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:569)
at java.lang.Integer.parseInt(Integer.java:615)
at
com.mysql.jdbc.NonRegisteringDriver.port(NonRegisteringDriver.java:882)
at
com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:350)
... 121 more
...
So, it shows there is no replacement of the TOKEN ${MYADMINDB_PORT}
with its environment value 3306.
I set explicitly the value 3306, and rebuild, this JNDI datasource
works.
NOTE: In this example, i have reduced the tokens in the JNDI
datasource just to MYADMINDB_PORT for testing porpuse. I real world
the JNDI datasource shouldn't have any explicit value, just the
tokens to be replaced by environment variables.
Thanks,
Andrés.
El 11/02/2016 a las 21:08, Ben Parees escribió:
You can always add the appropriate env variables to your "myadmin"
deployment config using the "oc env" command, and then redeploy it.
On Thu, Feb 11, 2016 at 2:52 PM, Andres <[email protected]
<mailto:[email protected]>> wrote:
Hello,
In this template you can create at the same time a MySQL
server and a Tomcat7. The Tomcat7 DataSource is configured
with the environment variables at the creation time.
But my case is that i have already deployed and configured the
MySQL server with:
oc new-app --name mydb mysql-persistent -p
DATABASE_SERVICE_NAME=xxx -p MYSQL_USER=xxx -p
MYSQL_PASSWORD=xxx -p MYSQL_DATABASE=xxx
And i want to deploy some separate build just with a Tomcat7,
for exaple with:
oc new-app --name myadmin
jboss-webserver30-tomcat7-openshift~http://<...>/MYADMIN.git
Or other posible situation could be to need several
datasources defined in context.xml pointing to diferent DDBB.
Thanks,
Andrés.
El 09/02/2016 a las 18:59, Ben Parees escribió:
This template illustrates it:
https://github.com/jboss-openshift/application-templates/blob/master/webserver/jws30-tomcat7-mysql-persistent-s2i.json
Specifically this section defines the env variables that will be
used to define the datasource:
https://github.com/jboss-openshift/application-templates/blob/master/webserver/jws30-tomcat7-mysql-persistent-s2i.json#L454-L485
That should result in a datasource named
${APPLICATION_NAME}-mysql being constructed using the various
DB_XXX env variable content, where "DB" comes from the "=DB"
portion of the DB_SERVICE_PREFIX_MAPPING.
Kevin, is this behavior documented somewhere? I didn't see it in
the openshift image docs.
On Tue, Feb 9, 2016 at 10:55 AM, [email protected]
<mailto:[email protected]> <[email protected]
<mailto:[email protected]>> wrote:
Hi,
In Openshift2, you could reference a MySQL DB from a
Tomcat cartridge just defining some environment
variables, that were replaced automatically in the JNDI
definition at the context.xml.
<Resource name="jdbc/piadmin"
url="jdbc:mysql://*${OPENSHIFT_MYSQL_DB_HOST}*:*${OPENSHIFT_MYSQL_DB_PORT}*/*${OPENSHIFT_APP_NAME}*"
driverClassName="com.mysql.jdbc.Driver"
username="*${OPENSHIFT_MYSQL_DB_USERNAME}*"
password="*${OPENSHIFT_MYSQL_DB_PASSWORD}*"
auth="Container"
type="javax.sql.DataSource"
maxActive="20"
maxIdle="5"
maxWait="10000"
/>
In OpenShift3, this doesnt work. The tokens in
context.xml are not replaced by their corresponding
environment variable values. What is then the correct way
to connect a JNDI datasource in a Tomcat S2I like
jboss-webserver30-tomcat7-openshift?
Thanks,
Andrés.
_______________________________________________
users mailing list
[email protected]
<mailto:[email protected]>
http://lists.openshift.redhat.com/openshiftmm/listinfo/users
--
Ben Parees | OpenShift
Este correo electrónico se ha enviado desde un equipo libre de
virus y protegido por Avast.
www.avast.com <https://www.avast.com/sig-email>
--
Ben Parees | OpenShift
_______________________________________________
users mailing list
[email protected]
http://lists.openshift.redhat.com/openshiftmm/listinfo/users