I also ran into this issue, as well as the need to dynamically change the
schema between environments (development, test, stage, Production - all
point to different databases/schemas)

I solved this using the following
1. each server has a systemProperty "env" that indicates whether it is "dev"
or "test" or "prod"
2. I have an Servlet.init() that calls System.getProperty("env"); and loads
the right OJB and log4J files 

for example when I deploy to the "test" server
3. in test_OJB.properties: 
        the repositoryFile =OJB/test_repository.xml
4. in test_repository.xml:
        <!DOCTYPE descriptor-repository SYSTEM "repository.dtd" [
                <!ENTITY internal SYSTEM "repository_internal.xml">
                <!ENTITY user SYSTEM "repository_user.xml">
                <!ENTITY schema "$TEST"> 
        ]>
5. in user_repository.xml  
        <class-descriptor class="c.k.e.m.c.d.d.CustomerVO" schema="&schema;"
table="CUSTOMER_TABLE">
        (schema= is the important part. &schema; is the entity defined
above)

6. in my SequenceManagerMSFImpl.getCustomerSeq()
        ClassDescriptor cld =
persistanceBroker.getClassDescriptor(CustomerVO.class);
        String current_env = cld.getSchema()+"."; //will = $TEST or #DSNA
        then I use current_env to go after a few tables that I need to to
generate the Seq
        (notice that I had to add the "." at the end)

I just thought I would include this info, in case you will need to move your
app from dev to test, and go after a different schema.

Has anyone developed a more elegant solution? I would like to avoid having
so many files (2 files XX_OJB.props and XX_repository.xml, for each
environment). This was the best I could come up with.

-John


        
-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
Sent: Thursday, July 10, 2003 10:13 AM
To: OJB Users List
Subject: Re: Oracle Connection & Schema Question


Try this 

<class-descriptor  class="com.ojb.SomeClass" 
table="PROJECT_FOO.SOME_TABLE">
...







"Brown, Melonie S. - Contractor" <[EMAIL PROTECTED]>
10.07.2003 19:03
Please respond to "OJB Users List"
 
        To:     "'[EMAIL PROTECTED]'" <[EMAIL PROTECTED]>
        cc: 
        Subject:        Oracle Connection & Schema Question


A directive was handed down by our dba's as follows. . . 

"There will be a schema called PROJECT_FOO which contains data, views,
procedures, etc.
There will be a userid called FOOUSER which will be used by the 
application
to do what needs to be doing on the database (read, write).
In developing code all calls to the database should include the prefix of
the schema i.e. PROJECT_FOO.myusertable, PROJECT_FOO.mytable, etc."

Our repository.xml looks like this:

      <jdbc-connection-descriptor
                                 platform="Oracle"
                                 jdbc-level="2.0"
                                 driver="com.p6spy.engine.spy.P6SpyDriver"
                                 protocol="jdbc"
                                 subprotocol="Oracle"  
 dbalias="thin:@999.999.99.999:8888:SERVER"
                                 username="FOOUSER"
                                 password="foopassword"
                                 jcd-alias="default"
                                 default-connection="true" 
                                 batch-mode="false"
        useAutoCommit="1"
        ignoreAutoCommitExceptions="false" 
   >
   <sequence-manager 
 
className="org.apache.ojb.broker.util.sequence.SequenceManagerNextValImpl">
    </sequence-manager> 
   </jdbc-connection-descriptor> 


With OJB, where would the schema be specified?

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