问题标签 [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 投票
8 回答
19192 浏览

guice-servlet - 如何在 Jersey 2.0 中使用 guice-servlet?

是否有任何示例代码演示如何在 Jersey 2.0 中使用 guice-servlet?

0 投票
2 回答
713 浏览

java - 有没有办法检查我是否在 Guice 的 servlet 请求中?

我正在编写 JUL 日志记录Handler,如果我们当前正在处理请求,我想用有关当前请求的信息来扩充记录的消息。为此,我将 aProvider<Thing>注入到Handler, where Thingis 中@RequestScoped

但是,如果在我们不处理请求时发生日志记录,调用provider.get()会抛出一个。OutOfScopeException我觉得赶上OutOfScopeException会很糟糕。有没有更好的方法来确定请求当前是否正在执行?

0 投票
1 回答
531 浏览

guice - 使用 Guice 将 @SessionScoped 值注入过滤器

我在会话中有一个用户的类持有值

现在我有一个LoginFilter确保通过用户登录访问的一些 url

然后当我尝试引导码头时抛出了超出范围的异常。如何检查会话是否包含UserSession对象?我不知道UserSession类的属性名称。

0 投票
1 回答
1161 浏览

mocking - 测试时Guice ServletScopes.scopeRequest 和@RequestParameters

我必须处理一些遗留代码。有一点我需要一个像

NewCodeAccessor.get() 它给了我一个从 Guice 获得的对象。

Guice 已提前初始化,并且请求对此类进行静态注入。

在生产代码中这工作正常,但现在我尝试测试它。PageDataHandle 是请求范围的,所以我的测试如下所示:

这仍然有效,只要 PageDataHandle 或其依赖项不为请求参数请求注入:

在这里,我得到一个 OutOfScope 异常:com.google.inject.ProvisionException:Guice 配置错误:

1) 自定义提供程序中的错误,com.google.inject.OutOfScopeException:无法访问作用域 > 对象。要么我们当前不在 HTTP Servlet 请求中,要么您可能忘记 > 应用 com.google.inject.servlet.GuiceFilter 作为该请求的 servlet 过滤器。

我试图用这样的东西添加我自己的测试模块:

但这不起作用,因为 RequestParameters 已经被 ServletRequest 绑定。

我可以做的是:我在为我的测试创建的注入器中省略了 ServletModule,并将 RequestScope 绑定到我自己的自定义范围。然后 RequestParameters 不会被其他任何人绑定,所以我可以创建自己的绑定来模拟它。但这似乎不太好。谁能告诉我如何正确地做到这一点?谢谢!

0 投票
2 回答
1172 浏览

java - 如何在我的 java web 应用程序中获取当前登录用户,但不在 servlet 上下文中?

获取当前用户信息后,我将其存储在会话中以备后用,但大多数情况下,我需要获取当前用户信息,而不是在 servlet 上下文中。比如在非servlet环境中我需要这样调用:

对此有什么想法吗?

进一步的问题,我使用 Guice-servlet,也许有办法注入当前用户?

0 投票
4 回答
1620 浏览

java - 使用请求范围和线程注入

我有一些业务类,它们注入了一些使用 servlet 请求范围提供的依赖项。

问题是我想在一些超过 servlet 请求的线程中使用该业务类。最透明的方法是什么?

0 投票
1 回答
985 浏览

annotations - Servlet 3.0 注释与 Guice 结合使用

我正在尝试更新旧的 Guice 应用程序,我想知道在考虑 Servlet 3.0 注释时是否有任何首选的做事方式。例如,我的应用程序有一个过滤器FooFilter,它是在Guice Module Factory方法configureServlets()中定义的,如下:

上面的绑定是否仍然必要,或者它会干扰使用@WebFilter Servlet 3.0 注释的以下内容:

现在首选哪种方法?他们会互相纠缠吗?

0 投票
0 回答
139 浏览

guice - 为什么在 guice 中定义的过滤器不监听 /*?

我的 DI 框架是 Guice。我也使用网站砖。也许我对这两个 API 的简单程度很着迷。但是我想使用 guice 绑定一个过滤器来监听 /* 但是过滤器只监听 / ?这是为什么?

当我调用localhost:8080/过滤器时执行但当我调用localhost:8080/index过滤器时不执行!这是为什么?

0 投票
0 回答
353 浏览

guice-servlet - 使用 guice-persist 时无法识别或保留对实体的更新

我在使用 guice-persist 和 guice-servlet(http-request 范围的 jpa 会话)时遇到问题,我尝试更新实体的值并持久化该更新,但更新从未持久化到数据库中。我尝试使用entityManager.flush()and强制写入entityManager.getTransaction().commit(),但是当我查看日志时,似乎什么也没有发生,即使 http 会话结束并释放 jdbc 连接也是如此。
我通常希望看到 hibernate 发出一个 sql update 语句,但更新似乎永远不会注册。令我感到奇怪的是,我创建新实体没有问题,这似乎只会影响更新。

我有一个单例范围的 servlet,它有一个注入的 UserDao,它使用注入的Provider<EntityManager>.

这是我的persistence.xml:

我已经使用 MySQL 和 Derby 数据库复制了这个问题。

以下是失败的更新尝试示例:

它需要一个DurableUser(在以前的 http 会话中创建 w/o 问题)并更新一个字段。即使有明确的flush()and commit(),hibernate 也不会发出更新语句。

我注意到在记录org.hibernate.internal.util.EntityPrinter用户的日志中toString(),它显示了更新的字段。这是否意味着 hibernate 确实识别出实体已被污染并且仍未保留更改?

谁能回答为什么我可以成功创建新实体但不能更新现有实体?到目前为止,我完全被难住了。

编辑:以下是会话的日志:

0 投票
1 回答
347 浏览

rest - 使用 Guice 3.0 + JaxRS 2.0 对 REST API 进行版本控制

我想要一个使用 HTTP 请求标头的版本化 REST api:

获取 /someResource

版本:1.0

现在,如果我有这个资源的 2 个版本,我的 JaxRS Web 应用程序需要能够提供适合任何一个请求版本的响应。因此,我希望以下类成为我的类路径的一部分:

现在,我想根据 Version 标头将请求分派给这些资源类之一。我假设这将使用 servlet 过滤器来完成。但由于我使用的是 Guice,我认为我正在寻找的是一个按请求注入器。

如果请求的版本为 1.0,则使用带有 SomeResourceV1 绑定的注入器,否则如果请求的版本为 2.0,则使用带有 SomeResourceV2 绑定的注入器

我认为有一种方法可以通过继承 GuiceFilter 来获得我想要的东西,但我并不完全确定。有没有人尝试过这样的事情?