gpt4 book ai didi

java - 在ActiveJDBC中引用database.properties文件的activejdbc.properties文件应该放在哪里?

转载 作者:行者123 更新时间:2023-12-02 11:39:24 24 4
gpt4 key购买 nike

我已经从 NetBeans 上的 Maven 原型(prototype) jersey-quickstart-webapp 创建了一个 Jersey 项目。我使用 ActiveJDBC 进行数据持久化。在其文档中,可以引用外部文件来获取数据库连接属性:http://javalite.io/database_connection_management#location-of-property-file

我已按照说明进行操作,并获得了此activejdbc.properties(位于project-ws/src/main/)文件内容:

env.connections.file=C:\dev\database.properties

以及database.properties 文件:

development.driver=com.mysql.jdbc.Driver
development.username=user_db
development.password=*****
development.url=jdbc:mysql://192.168.0.19/customersdb

test.driver=com.mysql.jdbc.Driver
test.username=user_db
test.password=*****
test.url=jdbc:mysql://192.168.0.19/customersdb

production.jndi=java:comp/env/jdbc/acme

另外,我有这个网络服务:

@Path("telephone")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class TelephoneResource {
@GET
public Response get() {
try {
Base.open();

LazyList<Telephone> tels= Telephone.findAll();

String telsJson = tels.toJson(true);

Base.close();

return Response.ok().entity(telsJson).build();
} catch (Exception ex) {
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity("{\"error\": \"" + ex.getMessage() + "\"}").build();
}
}
}

但是当我尝试执行该 GET 资源时,我收到此错误消息:

{
"error": "Could not find configuration in a property file for environment: development. Are you sure you have a database.properties file configured?"
}

我也尝试过其他配置:

通过使用 maven-surefire-plugin 将它们添加到 pom.xml 文件中:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.13</version>
<configuration>
<systemPropertyVariables>
<activejdbc.url>jdbc:mysql://192.168.0.19/customersdb</activejdbc.url>
<activejdbc.user>user_db</activejdbc.user>
<activejdbc.password>*****</activejdbc.password>
<activejdbc.driver>com.mysql.jdbc.Driver</activejdbc.driver>
</systemPropertyVariables>
<environmentVariables>
<ACTIVEJDBC.URL>jdbc:mysql://192.168.0.19/customersdb</ACTIVEJDBC.URL>
<ACTIVEJDBC.USER>user_db</ACTIVEJDBC.USER>
<ACTIVEJDBC.PASSWORD>*****</ACTIVEJDBC.PASSWORD>
<ACTIVEJDBC.DRIVER>com.mysql.jdbc.Driver</ACTIVEJDBC.DRIVER>
</environmentVariables>
</configuration>
</plugin>

但它们也不起作用。

最佳答案

本页: http://javalite.io/database_connection_management#location-of-property-file状态:

将文件 activejdbc.properties 添加到项目的类路径根目录中,并在其中配置属性:

这意味着该文件需要位于类路径的根目录中。由于您使用 Maven,这意味着:

src/main/resources/database.properties

看看这个应用程序,完成测试:https://github.com/javalite/simple-example

此外,在 Controller 内部打开连接是一种非常糟糕的方法。由于您没有使用 ActiveWeb其中manages connections automatically ,您可以编写一个简单的 Servlet 过滤器,类似于: ActiveJdbcFilter ,并从您的资源中获取 Base.open()/Base.close() 代码:

public class TelephoneResource {
@GET
public Response get() {
try {
return Response.ok().entity(Telephone.findAll().toJson(true)).build();
} catch (Exception ex) {
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity("{\"error\": \"" + ex.getMessage() + "\"}").build();
}
}
}

如果您想探索 ActiveWeb,这里是一个 Rest Web 应用程序的简单示例:https://github.com/javalite/activeweb-rest

关于java - 在ActiveJDBC中引用database.properties文件的activejdbc.properties文件应该放在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48691163/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com