Как сделать так, чтобы пользовательский ресурс также просматривался в glassfish по схеме java: com / env? - PullRequest
5 голосов
/ 11 марта 2009

Я создал несколько ресурсов JDBC и пользовательских ресурсов в GlassFish. Я назвал ресурс JDBC jdbc/mydb и пользовательский ресурс service/test.

Соединение JDBC ищется с помощью вызова ic.lookup("java:comp/env/jdbc/mydb"). Его также можно найти с ic.lookup("jdbc/mydb"), что имеет некоторые недостатки, см. Ответ Робина ниже.

Но мой пользовательский ресурс должен быть найден с ic.lookup("service/test"). Линия ic.lookup("java:comp/env/service/test") не работает. Возможно ли это, и если да, то как?

Ответы [ 4 ]

3 голосов
/ 11 марта 2009

Префикс указывает на использование ссылки на ресурс, которая была определена для объекта Java EE, из которого выполняется поиск JNDI. Вам также необходимо определить такую ​​ссылку для своего пользовательского ресурса, чтобы искать его таким же образом.

Префикс также не нужен для поиска в JDBC, так как вместо этого вы можете использовать полное имя jndi. Проблема этого подхода заключается в том, что если вы переместите ресурс так, чтобы он больше не находился в локальном начальном контексте, вы не найдете его, не изменив имя поиска в своем коде, чтобы включить информацию о местоположении. Использование ссылки защищает ваш код от этого, поэтому изменится только отображение в ссылке.

Некоторые информация здесь об использовании

1 голос
/ 27 сентября 2011

Если вы создали свои пользовательские ресурсы в файле domain.xml, возможно, вы забыли добавить их в качестве ресурса-ссылки под тегом server / server в вашем domain.xml:

    <resources>
        <!-- JDBC RESOURCE -->
        ...
        <custom-resource res-type="java.lang.String" jndi-name="MyCustomStringResource"
                         factory-class="org.glassfish.resources.custom.factory.PrimitivesAndStringFactory">
            <property name="value" value="hello, this is a string resource"></property>
        </custom-resource>
        ...
    </resources>
    <servers>
        <server name="server" config-ref="server-config">
            <application-ref ref="__admingui" virtual-servers="__asadmin"></application-ref>
            ...
            <resource-ref ref="MyCustomStringResource"></resource-ref>
            ...
        </server>
    </servers>
0 голосов
/ 09 июня 2017

glassfish 3 и выше использует административный интерфейс на localhost: 4848 используйте графический интерфейс и перейдите в JDNI> Пользовательские ресурсы> Новый ресурс

для предыдущей версии glassfish, я бы порекомендовал изменить glassfish.xml, чтобы создать новый ресурс с использованием спецификаторов

0 голосов
/ 11 марта 2009

Я не уверен, что Glassfish означает «пользовательский ресурс». В спецификации Java EE говорится, что пространство имен 'java: comp / env' зарезервировано для поиска ресурсов, которые связаны только с этим конкретным приложением. Итак

ic.lookup("java:comp/env/jdbc/mydb")

фактически означает, что jdbc / mydb является привязкой имени для приложения (EJB / servlet и т. Д.), Из которого вы выполняете поиск. Выполнение прямого поиска без использования префикса java: comp / env связывает ваше приложение с серверной средой, на которой вы развертываете.

...