Glassfish создает JDBCResources, -Pools и Security Realms из приложения - PullRequest
3 голосов
/ 24 июля 2011

Как я могу создать JDBCResources, -Pools и Security Realms на сервере Glassfish 3.1 из моего Приложения, если они еще не созданы? Я пишу приложение, которое использует эти ресурсы, однако я не хочу настраивать сервер вручную каждый раз, когда приложение развертывается на другом сервере.

Выполнение этого с помощью сценария оболочки выглядит как обходной путь.

Ответы [ 2 ]

3 голосов
/ 25 июля 2011

Glassfish предоставляет интерфейс REST. Вы можете создать новую область безопасности (аутентификации) в определенной конфигурации (скажем, server-config в DAS на localhost, порт администратора 4848) с POST для:

http://localhost:4848/management/domain/configs/config/server-config/security-service/auth-realm

Сделайте GET для этого ресурса, чтобы увидеть параметры.

Вы можете использовать тот же интерфейс для создания пулов соединений.

3 голосов
/ 25 июля 2011

Хорошо, я нашел решение для половины Вопроса.

Я создал файл с именем glassfish-resources.xml в своей папке WEB-INF и добавил в него следующее содержимое:

<?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>

Однако я не нашел ни единого мнения о том, как я могу определить области безопасности таким же образом.

...