java - Tomcat 7、Weld、RESTEasy 不扫描 JAR

标签 java tomcat jax-rs resteasy weld

我有 Tomcat 7.0.47,我正在托管 REST Easy JAXRS 服务。该服务使用两个外部 JAR,一个具有基础存储库接口(interface)和默认实现,另一个创建从基础派生的具体存储库(即这两个 JAR 具有依赖关系)。

该服务有效,即我可以发送请求并从数据库取回数据。

现在我要做的是将存储库注入(inject) REST 服务,为此我将 REST 代码更改为如下所示

@Path("/country")
public class CountryService {

    @Inject
    ICountriesRepository repository;

    @GET
    @Produces({"application/json", "application/xml"})
    public List<Country> getCountries() throws NamingException, SQLException {
        return repository.getCountries();
    }
}

我已经将 beans.xml 文件添加到 Web 应用程序的 WAR 文件(它位于 META-INF 目录中)并且我已经将 beans.xml 添加到两个 JARS。

当我部署应用程序时,我看到以下消息:

INFO: Adding scanned resource: com.mantiso.cricket.service.CountryService

但我没有在 JAR 中看到关于存储库类的类似消息。

JAR 已部署; beans.xml 文件位于 JAR 的 META-INF 目录中;我已经尝试将 @ManagedBean 添加到存储库类中。

我敢肯定我遗漏了一些简单的东西,但是很多搜索结果并不多。

这是 Tomcat 7.0.47; Weld 2.1.0; RESTEasy 3.0.5

我还应该尝试什么?

最佳答案

答案是:Web 应用程序的 beans.xml 文件必须位于 WEB-INF 目录中。如果它在 META-INF 目录中,则它不会被解析。

尽管如此,当我尝试注入(inject) servlet 时,这似乎工作正常

关于java - Tomcat 7、Weld、RESTEasy 不扫描 JAR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20546158/

相关文章:

java - 限制嵌入式 Tomcat 中的密码

java - Tomcat 与 WebSphere 与 WebLogic 的安全性

java - 获取 "MessageBodyWriter not found for media type=application/json"尝试通过 JAX-RS Web 服务发送 JSON 对象

java - 从用户输入获取双倍值时出错

java - 清除另一个应用程序缓存

java - JOOQ:返回多个用户定义的对象

java - 使用 servlet 在 WEB 文件夹中创建新目录不起作用

java - 如何创建带有可选参数的 REST API?

java - 如何使用 jax rs 将 json 对象传递给 java Rest Web 服务

java - 通过 "-XX:PermSize=192m -XX:MaxPermSize=2g -Xms2g -Xmx2g"在 linux 中通过终端增加内存