On Feb 11, 2008, at 7:09 PM, Brian Gregory wrote:
I've done a little research since the last post and found that tranql
documentation is pretty much non-existent, not to mention the
project looks
mostly dead.
It's always pleasant to have ones hard work recognized and
acknowledged. Of course, documentation contributions for tranql
would be welcomed. For some reason the tranql contributors so far
have not seemed to feel the lack of documentation to be a serious
impediment to their work.
There are two parts to tranql, the j2ca connectors which get improved
periodically, mostly by people supplying database-specific extensions
such as support for the feature you are interested in, and the
persistence engine which is not currently under active development:
its last use was in the openejb2 CMP engine.
Anyway, I have a custom LoginModule that with do the front-line
authentication straight from Oracle users and populate the
principals as
needed. I also have JPA code working from a console defined
database pool,
but was just looking for that one piece that would allow me to to
the proxy.
This doesn't exactly answer the question I asked, namely "which
method do you use to get the connection" However my guess is that
jpa is using ds.getConnection() rather than ds.getConnection(user,pw).
This means you want container managed security for your connection
pool, an optional j2ca feature that geronimo happens to support.
However its not trivial to set up.
First you ned a LoginModule that will extract the appropriate
credentials (user name and password) from some source such as the
CallbackHandler or a map and come up with a PasswordCredential
containing this info and the ManagedConnectionFactory you are trying
to use. We supply CallerIdentityPasswordCredentialLoginModule which
might work for you or you can use it to see what is necessary.
To deploy this in your security realm you need a
PasswordCredentialLoginModuleWrapperGBean which has the normal
LoginModuleGBean info plus a reference to the
ManagedConnectionFactoryWrapper which is where the MCF comes from.
Finally in your connector plan you need to specify <container-managed-
security/>
You will have to edit the appropriate geronimo plans directly as the
console wizards do not support these options.
I think I understand what you're suggesting but how do I get
geronimo to use
the new class instead of the default? I used the console database pool
configuration and it doesn't contain any class references besides
the jdbc
driver.
I was suggesting you modify the tranql oracle managed connection
factory classes and assemble your own rars. I don't know if you will
need more config-properties in order to use this oracle feature
appropriately. In any case you can probably use a plan generated for
one of the oracle specific rars as a starting point, but you'll have
to deploy the connector directly rather than from the db wizard. A
plan for the generic tranql wrapper is not a very useful starting point.
thanks
david jencks
The console doesn't seem to generate a working deployment descriptor:
<?xml version="1.0" encoding="UTF-8"?>
<connector xmlns="http://geronimo.apache.org/xml/ns/j2ee/
connector-1.2">
<dep:environment
xmlns:dep="http://geronimo.apache.org/xml/ns/deployment-1.2">
<dep:moduleId>
<dep:groupId>console.dbpool</dep:groupId>
<dep:artifactId>TestPool</dep:artifactId>
<dep:version>1.0</dep:version>
<dep:type>rar</dep:type>
</dep:moduleId>
<dep:dependencies>
<dep:dependency>
<dep:groupId>com.oracle</dep:groupId>
<dep:artifactId>oracle-jdbc-driver</dep:artifactId>
<dep:version>10.2.0.1.0XE</dep:version>
<dep:type>jar</dep:type>
</dep:dependency>
</dep:dependencies>
</dep:environment>
<resourceadapter>
<outbound-resourceadapter>
<connection-definition>
<connectionfactory-interface>javax.sql.DataSource</
connectionfactory-interface>
<connectiondefinition-instance>
<name>TestPool</name>
<config-property-setting
name="Driver">oracle.jdbc.OracleDriver</config-property-setting>
<config-property-setting
name="Password">test</config-property-setting>
<config-property-setting
name="UserName">test</config-property-setting>
<config-property-setting
name="ConnectionURL">jdbc:oracle:thin:@localhost:1521:SID</config-
property-setting>
<connectionmanager>
<local-transaction/>
<single-pool>
<max-size>10</max-size>
<min-size>0</min-size>
<match-one/>
</single-pool>
</connectionmanager>
</connectiondefinition-instance>
</connection-definition>
</outbound-resourceadapter>
</resourceadapter>
</connector>
djencks wrote:
On Feb 11, 2008, at 6:35 AM, Brian Gregory wrote:
1. Misconception on my part, what library is used for connection
pooling?
(Where is this is the docs?)
Dunno about docs. The basic implementation is in
https://svn.apache.org/repos/asf/geronimo/components/txmanager/trunk/
geronimo-connector
and the gbean wrappers and deployment code are in
https://svn.apache.org/repos/asf/geronimo/server/trunk/plugins/
connector
2. Proxy session is another name for changing the user credentials
on an
oracle connection. OracleConnection.openProxySession()
3. I'm not familiar with tranql. Can you point me to the
documentation?
Again, no docs I know of.
https://svn.codehaus.org/tranql
especially vendors/oracle/trunk
I think what you want to do is override
AbstractXADataSourceMCF.matchManagedConnections in the oracle
subclass so if there is no match on connections with their existing
credentials it calls openProxySession on one of the connections to
switch users. If openProxySession is very lightweight then just
calling it without a search would be reasonable.
Out of curiousity, how are you supplying the correct user to the
connector? Application managed security (datasource.getConnection
(user, password) or container managed security (using the identity of
the logged in user as tracked by the app server, possibly mapped with
an appropriate login module)?
Hope this helps and let us know if you run into problems or
succeed :-)
thanks
david jencks
--
View this message in context: http://www.nabble.com/proxy-session-
w--built-in-dbcp-%2B-openjpa-tp15404731s134p15425716.html
Sent from the Apache Geronimo - Users mailing list archive at
Nabble.com.