如何阅读ActiveJDBC的属性值设置?

时间:2018-06-11 20:22:32

标签: java activejdbc javalite

我正在使用activejdbc.properties文件来指定database.properties值的位置。

activejdbc.properties

env.connections.file=/opt/apps/conf/database.properties

database.properties (位于服务器上)

development.driver=oracle.jdbc.OracleDriver
development.username=myusername
development.password=mypassword
development.url=jdbc:oracle:thin:@//dburl:1521/testdb.world

我现在要做的是使用连接池。我已经检查过您的示例如何执行此操作,但是我并不完全了解如何提取数据库属性值以帮助创建连接池。

以下是您的例子:

public void shouldUseConnectionFromPool() throws PropertyVetoException, SQLException, ClassNotFoundException {
        Class.forName(driver());
        DataSource dataSourceUnpooled = DataSources.unpooledDataSource(url(), user(), password());
        DataSource dataSourcePooled = DataSources.pooledDataSource(dataSourceUnpooled); //init the connection pool
        Base.open(dataSourcePooled); //get connection from pool
        Person.deleteAll(); //clean DB before test
        Person.createIt("name", "Matt", "last_name", "Diamont", "dob", "1962-01-01");
        a(Person.findAll().size()).shouldBeEqual(1);

        Person.deleteAll();//clean DB after test
        Base.close();// really connection goes back to pool
        DataSources.destroy(dataSourcePooled);//shut down the pool
    }

这是我的。我正在使用JavaSpark并尝试在main()中定义我的池,以便在服务器启动时。

public static void main(String[] clargs) {

        try {
            DataSource dataSourceUnpooled = DataSources.unpooledDataSource("jdbc:oracle:thin:@//dburl:1521/testdb.world", "myusername", "mypassword");
            dataSourcePooled = DataSources.pooledDataSource(dataSourceUnpooled); //init the connection pool
        } catch (SQLException e1) {
            e1.printStackTrace();
        }

        before("/*", (req, res) -> {

            if (!Base.hasConnection()) {
                System.out.println("Database Connection OPEN.");
                Base.open(dataSourcePooled); //get connection from pool  ;
            }
         }

         after("/*", (req, res) -> {    
            Base.close(); // really connection goes back to pool
        });

        get("/exit", (req,res)->{
            if (Base.hasConnection()) {
                Base.close(); // really connection goes back to pool
            }
            DataSources.destroy(dataSourcePooled); //shut down the pool

            System.exit(0);
            return "Application shutdown";
        });
}

所以现在我试图删除我的硬编码属性值并使用我的文件中的设置。我看到你使用url()等,但不确定这是否是你为测试创建的私有方法。所以我的问题是,是否有一种简单的方法可以使用ActiveJDBC引入的URL,USERNAME,PASSWORD等,还是只需要读取服务器上的文件并手动拉出来?

1 个答案:

答案 0 :(得分:0)

这是你需要做的事情

- >删除文件java com.company.project.Main -cp myprogram.jar -Denv.connections.file=/opt/apps/conf/database.properties

- >由于Spark正在运行Jetty,因此使用Jetty配置JDBC池:https://wiki.eclipse.org/Jetty/Howto/Configure_JNDI_Datasource

- >使用以下内容创建属性文件tfidf = X[row, tfidf_feat.index(word)]

tfidf = final_tf_idf [row, tfidf_feat.index(word)]

- >重写你的程序:

ActionDispatch::Http::UploadedFile

我想你需要添加更多方法才能完成任何工作。

启动您的计划:

avatars[]

查看更多: http://javalite.io/database_connection_management#location-of-property-file