java - sharing object across different classes -


i need "design" advise. have static jdbc objects , "main entry class" shared among other classes.

my mainclass looks this:

public static jdbc db1; public static jdbc db2;  connectdb(makedirectconnection) // depending on runtime passed argument  public static connectdb(boolean makedirectconnection) { if(makedirectconnection) // use direct connection     db1 = jdbcfactory.getinstance("db/config/main/db1.properties");     db2 = jdbcfactory.getinstance("db/config/main/db2.properties"); } else { // connect using via ssh tunnel (different host , port)     db1 = jdbcfactory.getinstance("db/config/tunnel/db1.properties");     db2 = jdbcfactory.getinstance("db/config/tunnel/db2.properties"); } 

jdbcfactory maintains map of instances.

it kinda works ok, if want make unit test classes db1 or db2 being used null pointer exception if unit test don't mainclass.dbconnect()

make thing worse - test classes need 1 more different db setup, test.class do:

main.db1 = jdbcfactory.getinstance("db/config/test/db1.properties"); 

all it's messy , don't like. isn't there nicer approach how share db1 , db2?

also boolean makedirectconnection defined java run argument stops me using final db1 , db2. advice how workaround this? (it depends on environment program executed - don't want make dependable on hostname or other os thing.

since need set default instance diffrently testing , deployment. create property file mentiones file should used create default instance db1 , db2.

to remove need of calling mainclass.dbconnect() unit test code, create static block , here initlize db1 , db2 default. e.g. if property file defaultdb.properties , having following content:

db1=db/config/test/db1.properties db2=db/config/test/db2.properties 

then use following:

static private properties prop; static {     prop = new properties();     prop.load(new fileinputstream("defaultdb.properties"));     db1 = jdbcfactory.getinstance(prop.getproperty("db1"));     db2 = jdbcfactory.getinstance(prop.getproperty("db2")); } 

Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -