For the moment I just implemented my own ConnectionDataSource, but I cant seem to get far enough to test it. I dont' seem to be able to get hold of a Connection object. Here's what I tried, (if anyone has a better way, I would really like to hear it:

InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("project_schema.xml");
Database db = null;
try {
DatabaseReader reader = new DatabaseReader();
db = (Database) reader.parse( is );
} catch (IntrospectionException ie) {
System.out.println("Error creating DatabaseReader for project_schema.xml");
} catch (IOException ioe ) {
System.out.println("Error loading project_schema.xml");
} catch (SAXException saxe ) {
System.out.println("Error parsing project_schema.xml");
}
ConnectionFactoryFactory cff = ConnectionFactoryFactory.getInstance();
ConnectionFactory cf = cff.createConnectionFactory();
MetadataManager mm = MetadataManager.getInstance();
ConnectionRepository cRepos = mm.connectionRepository();
JdbcConnectionDescriptor descriptor = cRepos.getDescriptor(new PBKey("fdbcon"));
System.out.println("descriptor = " + descriptor);
Connection existing;
try {
existing = cf.lookupConnection(descriptor);
} catch (LookupException le) {
throw new RuntimeException("Failed looking up connection from descriptor.");
}


This however fails because the connection descriptor appears to return null for username and password...

java.sql.SQLException: Invalid authorization specification, message from server: "Access denied for user: '[EMAIL PROTECTED]' (Using password: NO)"
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1825)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1752)


Furthermore, it seems that OJB is NOT respecting my settings in the database.xml file completely. Here is the descriptor:

<jdbc-connection-descriptor
jcd-alias="fdbcon"
default-connection="true" <-------------Notice this!
platform="MySQL"
jdbc-level="2.0"
driver="org.gjt.mm.mysql.Driver"
protocol="jdbc"
subprotocol="mysql"
dbalias="//localhost:3306/fdbtest2"
username="This is, of course, something else in the deployed file"
password="This is, of course, something else in the deployed file"
eager-release="false"
batch-mode="false"
useAutoCommit="1"
ignoreAutoCommitExceptions="false"
>


       <connection-pool
           maxActive="21"
           validationQuery="" />

<sequence-manager className="org.apache.ojb.broker.util.sequence.SequenceManagerHighLowImpl">
<attribute attribute-name="grabSize" attribute-value="20"/>
<attribute attribute-name="autoNaming" attribute-value="true"/>
<attribute attribute-name="globalSequenceId" attribute-value="false"/>
<attribute attribute-name="globalSequenceStart" attribute-value="10000"/>
</sequence-manager>
</jdbc-connection-descriptor>


HERE is the toString of the JdbcConnectionDescriptor:

descriptor = [EMAIL PROTECTED]
jcd-alias=fdbcon
default-connection=false <-------------Notice this!
dbms=MySQL
jdbc-level=2.0
driver=org.gjt.mm.mysql.Driver
protocol=jdbc
sub-protocol=mysql
db-alias=//localhost:3306/fdbtest2
user=<null>
password=*****
eager-release=false
ConnectionPoolDescriptor={testOnReturn=false, maxWait=5000, timeBetweenEvictionRunsMillis=-1, testOnBorrow=true, numTestsPerEvictionRun=10, maxActive=21, removeAbandonedTimeout=300, removeAbandoned=false, maxIdle=-1, testWhileIdle=false, whenExhaustedAction=0, logAbandoned=false, minEvictableIdleTimeMillis=600000}
batchMode=false
useAutoCommit=AUTO_COMMIT_SET_TRUE_AND_TEMPORARY_FALSE
ignoreAutoCommitExceptions=false
[EMAIL PROTECTED]
sequenceManagerClass=class org.apache.ojb.broker.util.sequence.SequenceManagerHighLowImpl
Properties={grabSize=20, globalSequenceStart=10000, autoNaming=true, globalSequenceId=false}
]



Gus Heck wrote:


Ok I've been searching and grepping and pulling my hair out.... Where does one find ConnectionDataSource() I am really hoping your answer is not the obviously proprietary Orion application server... That seems to be the only thing I get hits for though :( purchasing proprietary server software _not_ an option for this project.

Do you know of an alternate (open source) means of getting a DataSource from a connection?

DDLExecutor exec = new DDLExecutor( new ConnectionDataSource(existing) );
String sql = swriter.toString();
exec.evaluateBatch( sql );


John Marshall





--------------------------------------------------------------------- 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]



Reply via email to