You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Eric Roberts <er...@tacc.utexas.edu> on 2006/04/13 22:28:26 UTC
JNDI DB Connection Pooling with SSL
PROBLEM:
I am having a problem setting up DB connection pooling with
Postgresql through JNDI in Tomcat 5.5.15. I have a portlet
application that is hosted in the GridSphere portlet container that,
upon initialization, gets a database connection from JNDI. The
database that I am connecting to REQUIRES an SSL connection so my
question is mostly about passing the usessl argument in the JNDI
config but I have included my setup to make sure I'm doing everything
correctly.
ENVIRONMENT
Linux
Java 1.4.2
Tomcat 5.5.15
Assuming my webapp name is "account-portlet" Here's my setup:
I have a context file in $CATALINA_HOME/conf/Catalina/localhost/
account-portlet.xml and the contents look like the following:
<!-- The contents of this file will be loaded for each web
application -->
<Context path="/tg-account-portlets" docBase="tg-account-portlets"
debug="1">
<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<Resource name="jdbc/jndihandle"
auth="Container"
type="javax.sql.DataSource"
factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
driverClassName="org.postgresql.Driver"
username="account_user"
password="secret"
url="jdbc:postgresql://pgsql.server.org:5432/mydb"
connectionProperties="useSSL=force"
/>
.....other Resource elements where I'm trying other combinations of
properties....
</Context>
I also have the following in my web.xml:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
....
<resource-ref>
<description>DataSource</description>
<res-ref-name>jdbc/jndidatasource</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
I am getting a JNDI context as follows:
public void init() throws PortletException {
try {
Context initContext = new InitialContext();
Context envContext = (Context) initContext.lookup("java:/
comp/env");
//if (context == null) {
//throw new Exception ("Uh oh -- no context!");
//}
DataSource ds = (DataSource) envContext.lookup("jdbc/
jndihandle");
if (ds == null) {
throw new Exception("Data source not found!");
}
conn = ds.getConnection();
}catch(NamingException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
When I run my application I get the following error in catalina.out:
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create
PoolableConnectionFactory (Connection rejected: FATAL: No
pg_hba.conf entry for host <hidden>, user account_user, database mydb
this tells me that the JNDI stuff is working but the SSL property is
not being set. I've tried appending ?useSSL=force to the url
attribute, I've tried appending ;useSSL=force to the url attribute.
I still get the same error message. I have been unable to find any
examples of people passing the useSSL property in the JNDI config.
Any Ideas?
Many Thanks,
Eric
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org
Re: JNDI DB Connection Pooling with SSL
Posted by Eric Roberts <er...@tacc.utexas.edu>.
I finally figured out the ssl problems I was having when trying to
use connection pooling with postgresql and tomcat jdni so I thought
I'd post the solution. The correct connectionProperties are (in my
case I am not validating SSL certs):
connectionProperties="ssl=true;sslfactory=org.postgresql.ssl.NonValidati
ngFactory;"
Eric
On Apr 17, 2006, at 9:28 AM, Eric Roberts wrote:
> Anyone have any suggestions for configuring an SSL encrypted
> connection pool to postgresql with tomcat 5.5.15?
>
> Eric
>
>
>
> On Apr 13, 2006, at 3:28 PM, Eric Roberts wrote:
>
>> PROBLEM:
>>
>> I am having a problem setting up DB connection pooling with
>> Postgresql through JNDI in Tomcat 5.5.15. I have a portlet
>> application that is hosted in the GridSphere portlet container
>> that, upon initialization, gets a database connection from JNDI.
>> The database that I am connecting to REQUIRES an SSL connection so
>> my question is mostly about passing the usessl argument in the
>> JNDI config but I have included my setup to make sure I'm doing
>> everything correctly.
>>
>> ENVIRONMENT
>> Linux
>> Java 1.4.2
>> Tomcat 5.5.15
>>
>> Assuming my webapp name is "account-portlet" Here's my setup:
>>
>> I have a context file in $CATALINA_HOME/conf/Catalina/localhost/
>> account-portlet.xml and the contents look like the following:
>>
>> <!-- The contents of this file will be loaded for each web
>> application -->
>> <Context path="/tg-account-portlets" docBase="tg-account-portlets"
>> debug="1">
>>
>> <!-- Default set of monitored resources -->
>> <WatchedResource>WEB-INF/web.xml</WatchedResource>
>>
>> <Resource name="jdbc/jndihandle"
>> auth="Container"
>> type="javax.sql.DataSource"
>>
>> factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
>> driverClassName="org.postgresql.Driver"
>> username="account_user"
>> password="secret"
>> url="jdbc:postgresql://pgsql.server.org:5432/mydb"
>> connectionProperties="useSSL=force"
>> />
>>
>> .....other Resource elements where I'm trying other combinations
>> of properties....
>>
>> </Context>
>>
>> I also have the following in my web.xml:
>>
>> <?xml version="1.0" encoding="ISO-8859-1"?>
>>
>> <!DOCTYPE web-app
>> PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
>> "http://java.sun.com/dtd/web-app_2_3.dtd">
>>
>> <web-app>
>> ....
>>
>> <resource-ref>
>> <description>DataSource</description>
>> <res-ref-name>jdbc/jndidatasource</res-ref-name>
>> <res-type>javax.sql.DataSource</res-type>
>> <res-auth>Container</res-auth>
>> </resource-ref>
>>
>> </web-app>
>>
>> I am getting a JNDI context as follows:
>>
>> public void init() throws PortletException {
>> try {
>> Context initContext = new InitialContext();
>> Context envContext = (Context) initContext.lookup
>> ("java:/comp/env");
>>
>> //if (context == null) {
>> //throw new Exception ("Uh oh -- no context!");
>> //}
>>
>> DataSource ds = (DataSource) envContext.lookup("jdbc/
>> jndihandle");
>>
>> if (ds == null) {
>> throw new Exception("Data source not found!");
>> }
>>
>> conn = ds.getConnection();
>> }catch(NamingException e) {
>> e.printStackTrace();
>> } catch (SQLException e) {
>> e.printStackTrace();
>> } catch (Exception e) {
>> e.printStackTrace();
>> }
>> }
>>
>> When I run my application I get the following error in catalina.out:
>>
>> org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create
>> PoolableConnectionFactory (Connection rejected: FATAL: No
>> pg_hba.conf entry for host <hidden>, user account_user, database mydb
>>
>> this tells me that the JNDI stuff is working but the SSL property
>> is not being set. I've tried appending ?useSSL=force to the
>> url attribute, I've tried appending ;useSSL=force to the url
>> attribute. I still get the same error message. I have been
>> unable to find any examples of people passing the useSSL property
>> in the JNDI config. Any Ideas?
>>
>> Many Thanks,
>>
>> Eric
>>
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
>> For additional commands, e-mail: users-help@tomcat.apache.org
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: users-help@tomcat.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org
Re: JNDI DB Connection Pooling with SSL
Posted by Eric Roberts <er...@tacc.utexas.edu>.
Anyone have any suggestions for configuring an SSL encrypted
connection pool to postgresql with tomcat 5.5.15?
Eric
On Apr 13, 2006, at 3:28 PM, Eric Roberts wrote:
> PROBLEM:
>
> I am having a problem setting up DB connection pooling with
> Postgresql through JNDI in Tomcat 5.5.15. I have a portlet
> application that is hosted in the GridSphere portlet container
> that, upon initialization, gets a database connection from JNDI.
> The database that I am connecting to REQUIRES an SSL connection so
> my question is mostly about passing the usessl argument in the JNDI
> config but I have included my setup to make sure I'm doing
> everything correctly.
>
> ENVIRONMENT
> Linux
> Java 1.4.2
> Tomcat 5.5.15
>
> Assuming my webapp name is "account-portlet" Here's my setup:
>
> I have a context file in $CATALINA_HOME/conf/Catalina/localhost/
> account-portlet.xml and the contents look like the following:
>
> <!-- The contents of this file will be loaded for each web
> application -->
> <Context path="/tg-account-portlets" docBase="tg-account-portlets"
> debug="1">
>
> <!-- Default set of monitored resources -->
> <WatchedResource>WEB-INF/web.xml</WatchedResource>
>
> <Resource name="jdbc/jndihandle"
> auth="Container"
> type="javax.sql.DataSource"
>
> factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
> driverClassName="org.postgresql.Driver"
> username="account_user"
> password="secret"
> url="jdbc:postgresql://pgsql.server.org:5432/mydb"
> connectionProperties="useSSL=force"
> />
>
> .....other Resource elements where I'm trying other combinations
> of properties....
>
> </Context>
>
> I also have the following in my web.xml:
>
> <?xml version="1.0" encoding="ISO-8859-1"?>
>
> <!DOCTYPE web-app
> PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
> "http://java.sun.com/dtd/web-app_2_3.dtd">
>
> <web-app>
> ....
>
> <resource-ref>
> <description>DataSource</description>
> <res-ref-name>jdbc/jndidatasource</res-ref-name>
> <res-type>javax.sql.DataSource</res-type>
> <res-auth>Container</res-auth>
> </resource-ref>
>
> </web-app>
>
> I am getting a JNDI context as follows:
>
> public void init() throws PortletException {
> try {
> Context initContext = new InitialContext();
> Context envContext = (Context) initContext.lookup
> ("java:/comp/env");
>
> //if (context == null) {
> //throw new Exception ("Uh oh -- no context!");
> //}
>
> DataSource ds = (DataSource) envContext.lookup("jdbc/
> jndihandle");
>
> if (ds == null) {
> throw new Exception("Data source not found!");
> }
>
> conn = ds.getConnection();
> }catch(NamingException e) {
> e.printStackTrace();
> } catch (SQLException e) {
> e.printStackTrace();
> } catch (Exception e) {
> e.printStackTrace();
> }
> }
>
> When I run my application I get the following error in catalina.out:
>
> org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create
> PoolableConnectionFactory (Connection rejected: FATAL: No
> pg_hba.conf entry for host <hidden>, user account_user, database mydb
>
> this tells me that the JNDI stuff is working but the SSL property
> is not being set. I've tried appending ?useSSL=force to the url
> attribute, I've tried appending ;useSSL=force to the url
> attribute. I still get the same error message. I have been
> unable to find any examples of people passing the useSSL property
> in the JNDI config. Any Ideas?
>
> Many Thanks,
>
> Eric
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: users-help@tomcat.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org