问题标签 [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.
java - Guice 注入在 ServletContextListener 中不起作用
Guice 注入在 ServletConextListener 中不起作用的原因是什么?
这是我的代码:
当然是这样:
- 在应用程序注入的所有其他地方都可以正常工作。
- 上面的监听器出现在 Guice 初始化之后。
任何的想法?
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。我如何强制它发生?我错过了什么?
java - 有没有一种很好的方法可以从子线程访问 Guice Request 范围内的项目并将本地范围内的内容限制到这些线程?
我目前正在开发我们设置为使用guice-servlet的产品。
对于我们收到的每个请求,我们都会产生一堆工作线程,每个工作线程都会启动并执行一个“任务”。然后合并这些任务的结果以产生响应。
这很常见/直截了当,但我以前从未尝试过与 Guice 结婚。不幸的是,我们陷入了必须提前绘制整个图表的情况。
即我们不能在子线程中执行任何延迟绑定,因为这将尝试使用不存在的请求/会话范围的东西。
几个相互关联的问题:
1)能够从我们的任务线程中访问请求范围的对象真是太好了。我最初被ServletScopes.transferRequest() 诱惑(并玩弄了),但被以下内容所挫败:
由于请求范围的对象通常不是线程安全的,因此在当前请求范围终止之前,此方法返回的可调用对象不得在不同的线程上运行。返回的可调用对象将阻塞,直到当前线程释放请求范围。
似乎这更多地用于在单独的线程中进行后处理(即在您响应后做一些工作)并且对线程安全的担忧是有效的。
Guicy™ 处理这个问题的方法是创建一个子注入器,它有一个单独的模块用于仅任务的东西,并用请求范围内需要/不可变的东西播种它?
读回来,似乎有点笨拙/笨拙,所以我可能错了。
2)正如你所想象的,为我们的工作线程创建一个自定义任务范围会很好。
当我错误地使用ServletScopes.transferRequest()时,我有一些工作)但是CustomScopes页面建议不要创建自定义范围:
通常建议用户不要编写自己的自定义范围——内置范围对于大多数应用程序应该足够了。
在我们的任务线程中,是否有更好的方法来确定范围?
提前致谢!!
tomcat - Tomcat 不会采用 Guice 配置
我正在尝试配置 Guice,当我将 war 文件部署到 Tomcat 时遇到了这个问题:
这是我的 web.xml 的内容:
这是我的 InjectorListener :
这里是 RestModule 类:
任何想法 ?
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。
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 而言,我有什么遗漏吗?
java - 集成 Guice、Servlet 和 Wicket
我花了几天时间浏览所有我能找到的例子,但我还没有找到一个对我有用的例子。现在大多数似乎是4-6岁。我觉得我只是缺少一些小东西来让我的 servlet 和 wicket 应用程序与 Guice 一起工作。到目前为止,此配置适用于我的检票口页面,但我的 servlet 无法注入任何内容。任何帮助,将不胜感激。
tomcat - Tomcat:在同一个 Web 应用程序中使用 servlet 和 websocket (jsr356)
我在tomcat中使用Guice-servlets和websocket创建了一个示例webapp,现在一旦使用guice过滤器websocket停止工作
基本信息:
在我的 web.xml 中,我使用初始化 GuiceservletGuiceBasedListener
GuieBasedListener
将所有请求绑定/*
到的代码MyDispatcher
MyDispatcher
仅以字符串响应的代码
我还有一个用于 Websocket 的 @ServerEndPoint
观察:
- 现在,如果我运行应用程序并点击http://app:8080/test它会返回
SUCCESS
- 但是,如果我尝试使用 ws://app:8080/websocket/chat2 连接到 websocket,它会失败
现在,如果我
serve("/*").with(MyDispatcher.class);
基本上评论如果我们关闭 guice 路由 websocket 开始工作如果我关闭 guice-servlet 但在 web.xml 中添加一个 servlet 映射,如下所示 websocket 仍然有效
< servlet-mapping >
< servlet-name > HelloWorld< / servlet-name >
< url-pattern > /* < / url-pattern >
< / servlet-mapping >
我错过了什么或做错了什么?
编辑:
观察-连续:
- 我所做的是定义了一个简单的过滤器,它只响应
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
我将 web.xml 更改为下面,guice 和 websocket 现在工作正常.. 所以我认为 Guice 不尊重在 GuiceFilter 之后注册的 WsFilter
/li>
TOMCAT 8.0、Window 7、Java 1.7、Guice 4.0、Guice-servlet-4.0
hibernate - 使用 Guice / GuicePersist 注入 Hibernate 拦截器
我将 JPA 与Guice Persist用于我的 GAE 项目,将Restlet用于 REST 接口。在引擎盖下,好的旧Hibernate提供了 JPA 服务。
这就像一个魅力,Guice 将必要的 JPA 部分注入到我的类中,EntityManager
例如RestletServlet
;
现在我想使用 aSessionInterceptor
将创建/编辑时间戳和当前活动用户插入到我的实体中。在旧项目中,我使用HibernateUtil
带有 ThreadLocal 变量的静态类来存储会话。在我的新项目中,我想用 Guice 解决这个问题。Guice 需要EntityManager
在 my中注入一个,SessionInterceptor
这样我就可以从数据库中加载当前的活动用户。
需要在SessionInterceptor
Hibernate 上下文中创建,并且不允许在启动后对其进行配置。因此我创建了一个SessionInterceptorFactory
使用 Guice Injector 的。在persistence.xml
这行得通(是的,它很丑),我有一个SessionInterceptor
Guice Injection。
但是当我尝试这段代码时;
[错误] 1) 没有绑定 javax.persistence.EntityManager 的实现。[错误] 在定位 com.google.inject.Provider 时 [错误]
为 com.ludus.server.hibernate.SessionInterceptor.(SessionInterceptor.java:20) 的第一个参数 [错误] 在定位 com.ludus.server.hibernate 时。会话拦截器
我需要将bound
JPA(Hibernate)配置与SessionInterceptor
Guice 中的()连接起来,就像我对RestletServlet
.
谁能帮我解决这个 Guice 配置?
除此之外,当前SessionInterceptorFactory
是“肮脏的 Guice hack”,是否有干净的 Guice 解决方案?