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

Custom resources equivalent to jetty JNDI resource

我有一个 Web 应用程序,直到现在才部署到码头服务器,但现在为了使用其他 JavaEE 服务,我正在转移到 Payara (Glassfish) 容器。但是我找不到如何提供额外的 JNDI 资源作为 paraya 的配置。 目前,我在码头的 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>

这只是使用给定参数调用自定义 class 构造函数并将结果放入给定 resource/path 地址。

这可以在 payara micro 中完成吗?

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

Payara/GlassFish 中的自定义资源在 domain.xml 元素 custom-resource 中定义。定义自定义资源的最佳方法是使用管理控制台(资源 -> JNDI -> 自定义资源)或 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 中,您可以使用 --domainConfig 参数传递 domain.xml,或者您可以使用 PayaraMicroRuntime.run() (documented here 从您的应用程序中执行相同的 asadmin 命令)