2016-12-11 10 views
0

У меня есть веб-приложение, которое до сих пор развернуто на приставочном сервере, но теперь, чтобы использовать другие службы JavaEE, я перехожу в контейнер Payara (Glassfish). Однако я не могу найти, как предоставить дополнительные ресурсы JNDI в качестве конфигурации для paraya. В настоящее время у меня есть некоторые ресурсы, как это определено в файле context.xml моего Jetty в:Пользовательские ресурсы, эквивалентные ресурсу JNDI Jetty

<New id="some_resource" class="org.eclipse.jetty.plus.jndi.Resource"> 
    <Arg> 
     <Ref refid='wac'/> 
    </Arg> 
    <Arg>resource/path</Arg> 
    <Arg> 
     <New class="com.example.some.Class"> 
      <!-- constructor parameters --> 
      <Arg type="java.lang.String">some string</Arg> 
      <Arg type="java.lang.Integer">0</Arg> 
     </New> 
    </Arg> 
</New> 

это просто вызывает пользовательский конструктор класса с заданными параметрами и помещает результат в данный resource/path адрес.

Можно ли это сделать в payara micro?

ответ

0

Возможно создание настраиваемого ресурса, который открывается через JNDI, хотя GlassFish/Payara поддерживает только примитивные типы по умолчанию. Для других типов вам нужно будет добавить произвольную фабрику в путь класса сервера.

Пользовательские ресурсы в Payara/GlassFish определены в domain.xml, в элементе custom-resource. Лучший способ определить пользовательский ресурс - либо использовать Консоль администратора (Ресурсы -> JNDI -> Пользовательские ресурсы), либо команду asadmin.

Для значения строки «некоторые строки» под JNDI resource/path, то asadmin будет выглядеть следующим образом:

asadmin> create-custom-resource --restype java.lang.String --factoryclass org.glassfish.resources.custom.factory.PrimitivesAndStringFactory --property value="some string" "resource/path" 

В скумбриевидном гидролике Micro, вы можете либо передать domain.xml используя --domainConfig аргумент, или вы можете выполнить то же самое asadmin с использованием PayaraMicroRuntime.run() (задокументировано here)

+0

так что прямое обращение к конструктору ресурса невозможно? и мне нужно создать один завод на один тип ресурса. – mohamnag

+0

Вы можете создать единую родовую фабрику для всех классов и передать аргументы конструктора через свойства. Если вы это сделаете, было бы также полезно внести свой вклад в запрос тянуть. Я не думаю, что Payara/GlassFish содержит такой завод из коробки. – OndrejM

+0

Хорошо спасибо за разъяснения, это было бы очень полезно. Я должен найти некоторое время, чтобы написать такую ​​подходящую фабрику, возможно, глядя на то, что [jetty has] (https://github.com/eclipse/jetty.project/) – mohamnag