0

我有一个 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>

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

这可以在payara micro中完成吗?

4

1 回答 1

0

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

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

对于 JNDI 下的字符串值“some string” resource/path,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使用参数传递,也可以使用PayaraMicroRuntime.run()从应用程序--domainConfig中执行相同的命令(在此处记录)asadmin

于 2016-12-12T15:06:07.603 回答