问题标签 [guice-servlet]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1068 浏览

java - Guice 注入在 ServletContextListener 中不起作用

Guice 注入在 ServletConextListener 中不起作用的原因是什么?

这是我的代码:

当然是这样:

  • 在应用程序注入的所有其他地方都可以正常工作。
  • 上面的监听器出现在 Guice 初始化之后。

任何的想法?

0 投票
0 回答
722 浏览

tomcat - 将 Guice 与 Jersey (squarespace) 集成:未安装 ServiceLocatorGenerator

我正在部署一个 Jersey 2.22 应用程序,我正在尝试使用 Squarespace jersey2-guice-impl 库与 Guice 4.0 顺利集成,以便我可以轻松地将 Guice 依赖项注入我的控制器。

(我对下面的小错字表示歉意,我不得不重新输入所有内容。)

但是我在启动时收到以下错误,这是由我的 WebListener 引起的:

我正在使用 pom.xml 中的以下依赖项:

这是 WebListener:

这是 web.xml

我在 Tomcat 7.0.42 中进行部署。

这看起来很简单。我认为加载时可能存在排序问题。可能在过滤器加载之前没有调用设置 ServiceLocatorGenerator。我如何强制它发生?我错过了什么?

0 投票
0 回答
378 浏览

java - 有没有一种很好的方法可以从子线程访问 Guice Request 范围内的项目并将本地范围内的内容限制到这些线程?

我目前正在开发我们设置为使用guice-servlet的产品。

对于我们收到的每个请求,我们都会产生一堆工作线程,每个工作线程都会启动并执行一个“任务”。然后合并这些任务的结果以产生响应。

这很常见/直截了当,但我以前从未尝试过与 Guice 结婚。不幸的是,我们陷入了必须提前绘制整个图表的情况。

即我们不能在子线程中执行任何延迟绑定,因为这将尝试使用不存在的请求/会话范围的东西。


几个相互关联的问题:

1)能够从我们的任务线程中访问请求范围的对象真是太好了。我最初被ServletScopes.transferRequest() 诱惑(并玩弄了),但被以下内容所挫败:

由于请求范围的对象通常不是线程安全的,因此在当前请求范围终止之前,此方法返回的可调用对象不得在不同的线程上运行。返回的可调用对象将阻塞,直到当前线程释放请求范围。

似乎这更多地用于在单独的线程中进行后处理(即在您响应后做一些工作)并且对线程安全的担忧是有效的。

Guicy™ 处理这个问题的方法是创建一个子注入器,它有一个单独的模块用于仅任务的东西,并用请求范围内需要/不可变的东西播种它?

读回来,似乎有点笨拙/笨拙,所以我可能错了。

2)正如你所想象的,为我们的工作线程创建一个自定义任务范围会很好。

当我错误地使用ServletScopes.transferRequest()时,我有一些工作)但是CustomScopes页面建议不要创建自定义范围:

通常建议用户不要编写自己的自定义范围——内置范围对于大多数应用程序应该足够了。

在我们的任务线程中,是否有更好的方法来确定范围?

提前致谢!!

0 投票
1 回答
749 浏览

tomcat - Tomcat 不会采用 Guice 配置

我正在尝试配置 Guice,当我将 war 文件部署到 Tomcat 时遇到了这个问题:

这是我的 web.xml 的内容:

这是我的 InjectorListener :

这里是 RestModule 类:

任何想法 ?

0 投票
1 回答
250 浏览

java - Tomcat 8.5下的Google Guice MethodInterceptor

我们不想在 tomcat 8.5 下使用 guice 作为提供者的 aop 方法拦截器。我们目前已经在我们的 Java-FX 应用程序中使用拦截器和 guice,没有任何问题。

尝试在 Tomcat 下做同样的事情是行不通的。对象通过 guice 注入到 servlet 中,但这些对象的注释方法不绑定到拦截器。看起来 guice 可能认为 cglib/asm 不可用并恢复为 none-aop。

为了使用 guice 的 aop,servlet 容器是否需要满足任何特殊的先决条件?如上所述,guice/cglib/asm 的相同配置适用于我们在任何 webapp 项目中。

我们不希望 servlet 中的 X 包含被拦截的方法。通过将 throw/catch 放在构造函数中,我们验证了构造函数是通过 guice 调用的。

servlet 是可访问的,并且 X 不为空,但在调试器中查看它很明显没有进行任何二进制代码修改。

我们在这里遗漏了什么吗?任何人都可以链接一个工作 guice (4+)/tomcat (8+)/aop 示例的示例吗?

编辑

原来它与 servlet 容器无关。问题在于 guice 本身。很抱歉造成混乱,这个问题很难解决。对于那些感兴趣的人,我们打开了一个问题 https://github.com/google/guice/issues/1094

请注意,在撰写本文时,这不被视为错误。也可能是我们误解了 javadoc。

0 投票
1 回答
83 浏览

java - Jersery1.x、Guice 和 Tomcat 的问题

我正在使用 Jersey 1.x、Guice 开发一个简单的应用程序并尝试在 Tomcat 上运行。

我使用了 Guice 过滤器和 Guice 侦听器以及资源和应用程序。

下面是我的 web.xml :

并使用 GuiceListener 我注入了所有依赖项,

这就是我的 Servlet 的外观

我用 GET 方法创建了一个资源,

我使用构造函数注入来注入类。

这就是我的应用程序的外观

我在 Tomcat 7 上部署它,当我尝试点击应用程序端点时,我得到 404,

http://localhost:9999/simple-0.0.1-SNAPSHOT/service/stuff/id

我可以在日志中看到所有类都已成功实例化。

这些是我的 pom.xml 中的依赖项。

就带有 guice 的 Tomcat 而言,我有什么遗漏吗?

0 投票
1 回答
216 浏览

java - 集成 Guice、Servlet 和 Wicket

我花了几天时间浏览所有我能找到的例子,但我还没有找到一个对我有用的例子。现在大多数似乎是4-6岁。我觉得我只是缺少一些小东西来让我的 servlet 和 wicket 应用程序与 Guice 一起工作。到目前为止,此配置适用于我的检票口页面,但我的 servlet 无法注入任何内容。任何帮助,将不胜感激。

0 投票
2 回答
354 浏览

guice - GUICE + JERSEY Bridge 中的 @BeanParam 注释

过滤器参数正在初始化,但 bean 中没有设置任何内容

对于 Filter 对象中存在的所有属性,我确实有 setter 和 getter。

仅供参考,我正在使用 HK2 guice-bridge

0 投票
1 回答
1913 浏览

tomcat - Tomcat:在同一个 Web 应用程序中使用 servlet 和 websocket (jsr356)

我在tomcat中使用Guice-servlets和websocket创建了一个示例webapp,现在一旦使用guice过滤器websocket停止工作

基本信息:

在我的 web.xml 中,我使用初始化 GuiceservletGuiceBasedListener

GuieBasedListener将所有请求绑定/*到的代码MyDispatcher

MyDispatcher仅以字符串响应的代码

我还有一个用于 Websocket 的 @ServerEndPoint

观察:

  1. 现在,如果我运行应用程序并点击http://app:8080/test它会返回SUCCESS
  2. 但是,如果我尝试使用 ws://app:8080/websocket/chat2 连接到 websocket,它会失败
  3. 现在,如果我serve("/*").with(MyDispatcher.class);基本上评论如果我们关闭 guice 路由 websocket 开始工作

  4. 如果我关闭 guice-servlet 但在 web.xml 中添加一个 servlet 映射,如下所示 websocket 仍然有效

    < servlet-mapping > < servlet-name > HelloWorld< / servlet-name > < url-pattern > /* < / url-pattern > < / servlet-mapping >

我错过了什么或做错了什么?


编辑:

观察-连续:

  1. 我所做的是定义了一个简单的过滤器,它只响应FILTER.

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { response.getOutputStream().print("FILTER"); }

并将我的 web.xml 更改为

现在按预期http://localhost:8080/app/x返回。FILTER但是尝试与 websocket 连接失败,因为请求显示了这样的内容。我还注意到,当我更改字符串时,在响应更改中返回内容长度,这意味着在 tomcat 为 websocket 处理它之前MyFilter已到达请求。MyFilter

在此处输入图像描述

  1. 我将 web.xml 更改为下面,guice 和 websocket 现在工作正常.. 所以我认为 Guice 不尊重在 GuiceFilter 之后注册的 WsFilter

    /li>

TOMCAT 8.0、Window 7、Java 1.7、Guice 4.0、Guice-servlet-4.0

0 投票
1 回答
801 浏览

hibernate - 使用 Guice / GuicePersist 注入 Hibernate 拦截器

我将 JPA 与Guice Persist用于我的 GAE 项目,将Restlet用于 REST 接口。在引擎盖下,好的旧Hibernate提供了 JPA 服务。

在此处输入图像描述 在此处输入图像描述

这就像一个魅力,Guice 将必要的 JPA 部分注入到我的类中,EntityManager例如RestletServlet;

在此处输入图像描述

现在我想使用 aSessionInterceptor将创建/编辑时间戳和当前活动用户插入到我的实体中。在旧项目中,我使用HibernateUtil带有 ThreadLocal 变量的静态类来存储会话。在我的新项目中,我想用 Guice 解决这个问题。Guice 需要EntityManager在 my中注入一个,SessionInterceptor这样我就可以从数据库中加载当前的活动用户。

需要在SessionInterceptorHibernate 上下文中创建,并且不允许在启动后对其进行配置。因此我创建了一个SessionInterceptorFactory使用 Guice Injector 的。在persistence.xml

在此处输入图像描述

在此处输入图像描述

这行得通(是的,它很丑),我有一个SessionInterceptorGuice Injection。

在此处输入图像描述

但是当我尝试这段代码时;

在此处输入图像描述

[错误] 1) 没有绑定 javax.persistence.EntityManager 的实现。[错误] 在定位 com.google.inject.Provider 时 [错误]
为 com.ludus.server.hibernate.SessionInterceptor.(SessionInterceptor.java:20) 的第一个参数 [错误] 在定位 com.ludus.server.hibernate 时。会话拦截器

我需要将boundJPA(Hibernate)配置与SessionInterceptorGuice 中的()连接起来,就像我对RestletServlet.

谁能帮我解决这个 Guice 配置?

除此之外,当前SessionInterceptorFactory是“肮脏的 Guice hack”,是否有干净的 Guice 解决方案?