自定义资源相当于jetty JNDI资源

时间:2016-12-11 12:01:37

标签: glassfish payara-micro

我有一个Web应用程序,直到现在部署到jetty服务器,但现在为了使用其他JavaEE服务,我转移到Payara(Glassfish)容器。但是,我无法找到如何提供额外的JNDI资源作为paraya的配置。 目前我在jetty的context.xml文件中定义了一些像这样的资源:

<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中完成吗?

1 个答案:

答案 0 :(得分:0)

可以创建通过JNDI公开的自定义资源,但GlassFish / Payara默认只支持基本类型。对于其他类型,您需要在服务器类路径中添加自定义工厂。

Payara / GlassFish中的自定义资源在domain.xml中的元素custom-resource中定义。定义自定义资源的最佳方法是使用管理控制台(资源 - &gt; JNDI - &gt;自定义资源)或asadmin命令。

对于JNDI resource/path下的字符串值“some string”,asadmin看起来像这样:

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

在Payara Micro中,您可以使用domain.xml参数传递--domainConfig,也可以使用PayaraMicroRuntime.run()从应用程序中执行相同的asadmin命令(已记录{ {3}})