我正在尝试使用Maven2和Cargo为GlassFish 2.x项目进行集成测试。我终于让Cargo尝试部署我的EAR,但由于未配置数据源,因此无法启动。该应用程序还依赖于一些JMS队列和连接工厂 - 如何添加这些?
Cargo Glassfish 2.x plugin表示不支持现有配置,所以我不能这样做。
使用maven-glassfish-plugin是一种选择,但我们也运行OC4J,因此首选货物解决方案。
编辑:资源包括:1个JDBC连接池,1个JDBC资源,4个JMS队列,2个JMS连接工厂和一个自定义安全领域(梨树可选)。领域需要在login.conf中输入一个条目,如:
myRealm {
uk.co.mycom.MyGlassFishLoginModule required;
};
答案 0 :(得分:1)
我不肯定(我从未使用过这个)但是IIRC,您应该能够将您的数据源配置放在sun-resources.xml
文件中并将其打包在META-INF/sun-resources.xml
下在您的EAR中,GlassFish应该在部署时创建资源。
以下是sun-resources.xml
示例:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE resources PUBLIC "-//Sun Microsystems Inc.//DTD Application Server 9.0 Domain//EN" "sun-resources_1_3.dtd">
<resources>
<jdbc-connection-pool name="SPECjPool" steady-pool-size="100"
max-pool-size="150" max-wait-time-in-millis="60000"
pool-resize-quantity="2" idle-timeout-in-seconds="300"
is-isolation-level-guaranteed="true"
is-connection-validation-required="false"
connection-validation-method="auto-commit"
fail-all-connections="false"
datasource-classname="oracle.jdbc.pool.OracleDataSource">
<property name="URL"
value="jdbc:oracle:thin:@iasperfsol12:1521:specdb"/>
<property name="User" value="spec"/>
<property name="Password" value="spec"/>
<property name="MaxStatements" value="200"/>
<property name="ImplicitCachingEnabled" value="true"/>
</jdbc-connection-pool>
<jdbc-resource enabled="true" pool-name="SPECjPool"
jndi-name="jdbc/SPECjDB"/>
</resources>
试一试。
谢谢,这很有效。数据源似乎已经好了,应用程序已经部署完毕。但是,从您链接的文档中,我看不到如何添加我需要的其他内容(在我的问题中编辑了更多详细信息)。这个解决方案还意味着我必须(使用配置文件?)以不同的方式为IT构建我的EAR,这是不完美的。
我错过了你想要创建除Datasources之外的其他资源,我看到几个线程报告说建议的方法不适用于任何资源(如JMS资源)的GlassFish v2。我的坏。
因此,鉴于当前状态,您的选项是(IMO):
我没有更好的建议。