如果尚未创建Glassfish 3.1服务器,如何在我的应用程序中创建JDBCResources,-Pools和Security Realms?我正在编写一个依赖于这些资源的应用程序,但是每次将应用程序部署在不同的服务器上时,我都不想手动配置服务器。
使用shell脚本执行此操作就像是一种解决方法。
答案 0 :(得分:3)
好的,我找到了一半问题的解决方案。
我在WEB-INF文件夹中创建了一个名为glassfish-resources.xml
的文件,并添加了以下内容:
<?xml version="1.0" encoding="UTF-8"?>
<!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/jdbc/BeerUserPool"
res-type="javax.sql.DataSource"
datasource-classname="org.postgresql.ds.PGSimpleDataSource"
pool-resize-quantity="2"
max-pool-size="32"
steady-pool-size="0"
statement-timeout-in-seconds="30">
<property name="User" value="USERNAME"></property>
<property name="Password" value="PASSWORD"></property>
<property name="PortNumber" value="12345678"></property>
<property name="dataBaseName" value="DATABASE_NAME"></property>
<property name="ServerName" value="yourDBUrl.com"></property>
<property name="Ssl" value="false"></property>
<property name="ProtocolVersion" value="0"></property>
</jdbc-connection-pool>
<jdbc-resource
pool-name="java:app/jdbc/BeerUserPool"
jndi-name="java:app/jdbc/BeerUser"></jdbc-resource>
<
</resources>
将java:app /添加到名称很重要,没有它它将无法正常工作。此连接池也只是应用程序作用域,并在应用程序取消部署后被销毁(除了您添加其他参数)。
现在可以使用JPA访问此池,并使用以下persistence.xml
。
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence">
<persistence-unit name="jsf-jpa-war" transaction-type="JTA">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<jta-data-source>java:app/jdbc/BeerUser</jta-data-source>
<properties>
<property name="eclipselink.logging.level" value="FINE"/>
</properties>
</persistence-unit>
</persistence>
但是我没有发现灵魂如何以同样的方式定义安全领域。
答案 1 :(得分:3)
Glassfish提供REST接口。您可以在某个配置中创建一个新的安全(身份验证)领域(例如,在本地主机上的DAS中为server-config
,管理端口4848),并使用POST:
http://localhost:4848/management/domain/configs/config/server-config/security-service/auth-realm
对该资源执行GET以查看参数。
您可以使用相同的界面来创建连接池。