我想将EAR两次部署到同一个Glassfish服务器(到不同的虚拟服务器)。但是应用程序使用Databaseconnection,它在应用程序中使用<jta-data-source>
- 标记设置。问题是,两个实例都应该使用不同的数据库。
有没有办法在部署中设置<jta-data-source>
- 标签?
不同的域名无法使用,因为他们无法在同一个端口上收听...
如果它不起作用,那么我必须在Glassfish前面使用Apache来映射正确的端口......
答案 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