来自JBoss的RESTEasy和JNDI数据源

时间:2017-01-19 18:36:23

标签: jboss wildfly jndi resteasy

我正在尝试使用JBoss EAP 7 standalone.xml中声明的数据源:

<datasource jndi-name="java:jboss/datasources/my_db" pool-name="my_db" ...>
...
</datasource>

顺便说一下,我还没有找到任何关于名称约定的文档,java:/datasources/my_db也是正确的吗?

然后,只要我将以下内容添加到我的RESTEasy web.xml中(无其他修改):

<context-param>
    <param-name>resteasy.jndi.resources</param-name>
    <param-value>java:jboss/datasources/my_db</param-value>
</context-param>

应用程序因错误而中断:

java.lang.RuntimeException: RESTEASY003130: Class is not a root resource.
It, or one of its interfaces must be annotated with @Path:
org.jboss.as.connector.subsystems.datasources.WildFlyDataSource implements:
javax.sql.DataSource java.io.Serializable

如何在RESTEasy中访问JNDI数据源?
感谢。

2 个答案:

答案 0 :(得分:0)

当您在WildFly / JBossEAP 7容器中运行时,您可以完全忘记它的JAX-RS实现是基于RestEASY构建的。

您可以完全删除web.xml(或至少包含它包含的任何RestEASY配置),然后构建&#34; pure&#34; JAX-RS:

Development/cocos2d-x-3.14/tools/cocos2d-console/bin': not a valid identifier
-bash: export:

您可以注入EJB,CDI bean,PersistenceContexts等。它将会正常工作&#34;。

答案 1 :(得分:0)

史蒂夫的回答是正确的,但还有另一种方法可以做到:

DataSource ds = (DataSource) new InitialContext().lookup("java:jboss/datasources/my_db");

我更喜欢使用@Resource