Glassfish3:相同的耳朵,不同的数据库

时间:2012-03-12 14:28:26

标签: glassfish ear

我想将EAR两次部署到同一个Glassfish服务器(到不同的虚拟服务器)。但是应用程序使用Databaseconnection,它在应用程序中使用<jta-data-source> - 标记设置。问题是,两个实例都应该使用不同的数据库。 有没有办法在部署中设置<jta-data-source> - 标签?

不同的域名无法使用,因为他们无法在同一个端口上收听...

如果它不起作用,那么我必须在Glassfish前面使用Apache来映射正确的端口......

1 个答案:

答案 0 :(得分:2)

您需要使用应用程序作用域资源。只需将 glassfish-resources.xml 描述符添加到您耳朵的META-INF中即可。它应该是这样的:

<!DOCTYPE resources PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Resource Definitions//EN" "http://glassfish.org/dtds/glassfish-resources_1_5.dtd">
<resources>
    <jdbc-connection-pool name="java:app/my-app-pool" 
                          res-type="javax.sql.DataSource"
                          datasource-classname="org.apache.derby.jdbc.ClientDataSource"
                          pool-resize-quantity="1" 
                          max-pool-size="5" 
                          steady-pool-size="0"
                          statement-timeout-in-seconds="60" >
        <property name="serverName" value="localhost" />
        <property name="portNumber" value="1527" />
        <property name="dataBaseName" value="sun-appserv-samples" />
        <property name="User" value="APP" />
        <property name="Password" value="APP" />
        <property name="connectionAttributes" value=";create=true" />
        <property name="driverType" value="4" />
    </jdbc-connection-pool>
    <jdbc-resource jndi-name="java:app/jdbc/my-app" pool-name="java:app/my-app-pool"/>
</resources>

将您的耳朵部署到glassfish后,您可以在配置中找到您的应用程序。将有一个标签“资源”,您可以在其中更改所有参数。 因此,您可以根据需要部署任意数量的应用程序,并且所有应用程序都可以具有不同的参数。

可以选择重新部署应用程序“保留应用程序范围资源”。可以从Admin UI或命令行使用此选项:

redeploy --name myapp --properties preserveAppScopedResources=true myapp.ear