我有一个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中完成吗?
答案 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}})