NetBeans的Jersey项目中,ActiveJDBC的activejdbc.properties应放于何处以引用database.properties?
嘿,我来帮你把这个Jersey+ActiveJDBC项目的配置理清楚,结合你提到的场景,一步步来操作:
一、ActiveJDBC数据库连接配置(对应你已创建的属性文件)
- 调整
activejdbc.properties的存放路径:你现在把文件放在project-ws/src/main/,但NetBeans的Maven项目默认只会把src/main/resources下的文件打包到classpath中(也就是最终的WEB-INF/classes目录),这样ActiveJDBC才能自动加载到配置。如果想保留现有路径,需要在pom.xml里配置Maven资源插件,确保文件被正确打包:
<build> <resources> <resource> <directory>src/main</directory> <includes> <include>activejdbc.properties</include> </includes> </resource> </resources> </build>
当然更推荐直接把文件移到src/main/resources/目录下,这样不用额外配置,更符合Maven的规范。
- 复用
database.properties的配置:如果你的database.properties里已经有数据库连接信息,不想在activejdbc.properties里重复写,可以在activejdbc.properties中通过include属性引入它:
include=database.properties
这样ActiveJDBC会先加载database.properties的内容,再加载当前文件的配置,完美实现配置复用。
二、Jersey Web服务核心配置要点
- 注册ActiveJDBC连接管理过滤器:为了让ActiveJDBC在Web请求生命周期内自动管理数据库连接(请求开始打开,结束关闭),需要在
web.xml里注册它的过滤器:
<filter> <filter-name>ActiveJDBCFilter</filter-name> <filter-class>org.javalite.activejdbc.web.ActiveJDBCFilter</filter-class> </filter> <filter-mapping> <filter-name>ActiveJDBCFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
这个过滤器能帮你省去手动打开/关闭连接的麻烦,避免连接泄漏。
- 编写数据库操作的Jersey资源类:在你的Jersey资源类里,可以直接使用ActiveJDBC的模型类来操作数据库,比如一个查询用户列表的接口:
@Path("/users") public class UserResource { @GET @Produces(MediaType.APPLICATION_JSON) public List<User> getUsers() { // User是继承自org.javalite.activejdbc.Model的模型类 return User.findAll().orderBy("id"); } }
- 检查Maven依赖与构建插件:确保
pom.xml里包含了Jersey和ActiveJDBC的必要依赖,以及ActiveJDBC的增强插件(用来处理模型类的字节码增强):
<!-- Jersey核心依赖 --> <dependency> <groupId>org.glassfish.jersey.containers</groupId> <artifactId>jersey-container-servlet</artifactId> <version>2.41</version> </dependency> <!-- ActiveJDBC核心与增强依赖 --> <dependency> <groupId>org.javalite</groupId> <artifactId>activejdbc</artifactId> <version>2.6</version> </dependency> <dependency> <groupId>org.javalite</groupId> <artifactId>activejdbc-instrumentation</artifactId> <version>2.6</version> <scope>provided</scope> </dependency> <!-- ActiveJDBC字节码增强插件 --> <build> <plugins> <plugin> <groupId>org.javalite</groupId> <artifactId>activejdbc-instrumentation</artifactId> <version>2.6</version> <executions> <execution> <phase>process-classes</phase> <goals> <goal>instrument</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
内容的提问来源于stack exchange,提问作者InfZero
相关产品推荐
相关产品推荐

