2

我正在尝试使用 Maven2 和 Cargo 为 GlassFish 2.x 项目进行集成测试。我终于让 Cargo 尝试部署我的 EAR,但由于未配置数据源,它无法启动。该应用程序还依赖于一些 JMS 队列和一个连接工厂——如何添加这些?

Cargo Glassfish 2.x 插件说不支持现有配置,所以我不能这样做。

使用 maven-glassfish-plugin 是一种选择,但我们也运行 OC4J,因此首选 Cargo 解决方案。

编辑:资源是:1 个 JDBC 连接池、1 个 JDBC 资源、4 个 JMS 队列、2 个 JMS 连接工厂和一个自定义安全领域(梨树可选)。该领域需要 login.conf 中的条目,例如:

myRealm {
    uk.co.mycom.MyGlassFishLoginModule required;
};
4

1 回答 1

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 之外的其他资源,并且我看到几个线程报告建议的方法不适用于 GlassFish v2 的任何资源(如 JMS 资源)。我的错。

因此,鉴于当前状态,您的选择是(IMO):

  • 为 Cargo 做出贡献,为 GlassFish v2 提供“现有”配置实现
  • 按照您的建议使用 maven-glassfish-plugin

我没有更好的建议。

于 2010-11-02T16:56:30.090 回答