Re: JNDI DB Connection Pooling with SSL

2006-04-17 Thread Eric Roberts
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 --
WatchedResourceWEB-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
  descriptionDataSource/description
  res-ref-namejdbc/jndidatasource/res-ref-name
  res-typejavax.sql.DataSource/res-type
  res-authContainer/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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



JNDI DB Connection Pooling with SSL

2006-04-13 Thread Eric Roberts

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 --
WatchedResourceWEB-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
  descriptionDataSource/description
  res-ref-namejdbc/jndidatasource/res-ref-name
  res-typejavax.sql.DataSource/res-type
  res-authContainer/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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]