Glassfish从应用程序创建JDBCResources,-Pools和Security Realms

时间:2011-07-23 21:26:01

标签: glassfish administration

如果尚未创建Glassfish 3.1服务器,如何在我的应用程序中创建JDBCResources,-Pools和Security Realms?我正在编写一个依赖于这些资源的应用程序,但是每次将应用程序部署在不同的服务器上时,我都不想手动配置服务器。

使用shell脚本执行此操作就像是一种解决方法。

2 个答案:

答案 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以查看参数。

您可以使用相同的界面来创建连接池。