问题标签 [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 回答
2798 浏览

java - 使用 guice 的会话状态

我有一些会话范围的状态。持有它的第一个想法是会话范围的 servlet。所以我像这样绑定我的servlet

但我得到一个例外

javax.servlet.ServletException:必须将 Servlet 绑定为单例。Key[type=Foo, annotation=[none]] 未绑定在单例范围内。

所以 servlet 不能从 ServletScopes 获得作用域?处理会话状态的正确方法是什么(是的,当然最好编写无状态的 servlet/类/应用程序)?

0 投票
1 回答
136 浏览

java - 提供者扩展

我需要为会话范围创建提供程序,例如ServletScopes.SESSION,但在对象构造之后有一个额外的操作(例如添加侦听器)。第一个想法 - 扩展ServletScopes.SESSION和覆盖一些方法,但不幸ServletScopes.SESSION的是对象,而不是类。那么,如何在不从 ServletScopes 复制粘贴代码的情况下获得这样的提供程序呢?

0 投票
3 回答
3678 浏览

java - 将请求转发到 JSP

我上周发现了 Guice……我正在尝试一些简单的技巧。但是,我目前被阻止了...

我正在尝试将请求转发到由包含“ * ”的 url 模式提供的 Servlet 中的 JSP。但我一直收到“错误 404”:(

一步步 :



我收到此错误:

HTTP 错误 404
访问 /WEB-INF/layout/test.jsp 时出现问题。原因:
/WEB-INF/layout/test.jsp

我用 "serve("/test").with(TestServlet.class);" 进行了测试 我在没有 Guice 的情况下测试了它
(通过在 web.xml 中定义 servlet),它有效......

  • 我做错了什么?

感谢阅读!

0 投票
1 回答
2924 浏览

java - 如何将 Guice Servlet 与 Wicket 一起使用

使用 Guice Servlet 设置我的 Wicket 项目后,我得到了一个java.lang.IllegalStateException: filter path was not configured. 不过,过滤器路径配置。我错过了什么吗?

web.xml

Guice Servlet 监听器:

堆栈跟踪(访问页面时):

0 投票
1 回答
3719 浏览

guice - 使用 Google Guice Servlet 配置 Apache Shiro

我开始使用 Guice/Shiro 而不是 Spring/Spring Security。我查看了 Shiro 网站上的示例,所有配置示例都是作为 INI 文件示例制作的。是否可以在纯 Java 中配置 Shiro,因为 Guice Servlet 是要配置的?

0 投票
3 回答
10087 浏览

java - Guice + Tomcat 潜在的内存泄漏

我刚刚开始在我的 Tomcat webapp 中使用 Google Guice,并且在取消部署 WAR 文件时注意到 catalina.out 文件中的以下内容:

May 16, 2011 5:37:24 PM org.apache.catalina.startup.HostConfig checkResources INFO: Undeploying context [/app]

May 16, 2011 5:37:24 PM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads SEVERE: A web application appears to have started a thread named [com.google.inject.internal.util.$Finalizer] but has failed to stop it. This is very likely to create a memory leak.

May 16, 2011 5:37:24 PM org.apache.catalina.loader.WebappClassLoader clearThreadLocalMap SEVERE: A web application created a ThreadLocal with key of type [null] (value [com.google.inject.internal.InjectorImpl$1@10ace8d]) and a value of type [java.lang.Object[]] (value [[Ljava.lang.Object;@7e9bed]) but failed to remove it when the web application was stopped. To prevent a memory leak, the ThreadLocal has been forcibly removed.

有谁知道是什么原因造成的,或者我怎样才能阻止它发生?

我只按照这里的说明 http://code.google.com/docreader/#p=google-guice&s=google-guice&t=ServletModule

...而且还没有做任何花哨的事情。我只有 2 个 servlet 和一个过滤器。

谢谢!

0 投票
1 回答
3815 浏览

gwt - 使用 Guice 注入 GWT RequestFactory 配置 servletModule 的问题

我想在 GWT 2.3 RequestFactory 的服务器端使用 GUICE。我的类扩展了 ServletModule:

在 web.xml 中我添加了:

我引用了validation-api.XXX.jar(因为它是GWT的一部分)

当我运行它时(在带有 GWT 插件的 Eclipse 下),它说:

jetty-6.1.x [WARN] guiceFilter 失败:com.google.inject.ProvisionException:Guice 配置错误:

1) 注入构造函数时出错,java.lang.NoClassDefFoundError: javax/validation/ValidationException at com.google.web.bindery.requestfactory.server.RequestFactoryServlet.(RequestFactoryServlet.java:74) at com.djay.eyeandtrack.server.EatServletModule。 configureServlets(EatServletModule.java:13) 同时定位 com.google.web.bindery.requestfactory.server.RequestFactoryServlet

1 错误 [WARN] 上下文 com.google.apphosting.utils.jetty.DevAppEngineWebAppContext@17b3de2{/,C:\5_DJAY\03_EYEANDTRACK\branches\djaysbox\EyeAndTrack\war} com.google.inject.ProvisionException 启动失败:Guice 配置错误:

1) 注入构造函数时出错,java.lang.NoClassDefFoundError: javax/validation/ValidationException at com.google.web.bindery.requestfactory.server.RequestFactoryServlet.(RequestFactoryServlet.java:74) at com.djay.eyeandtrack.server.EatServletModule。 configureServlets(EatServletModule.java:13) 同时定位 com.google.web.bindery.requestfactory.server.RequestFactoryServlet

在 com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1009) 在 com.google.inject.servlet 的 com.google.inject.internal.InjectorImpl$4.get(InjectorImpl.java:987) 出现 1 个错误。 ServletDefinition.init(ServletDefinition.java:108) 在 com.google.inject.servlet.ManagedServletPipeline.init(ManagedServletPipeline.java:82) 在 com.google.inject.servlet.ManagedFilterPipeline.initPipeline(ManagedFilterPipeline.java:102) 在 com .google.inject.servlet.GuiceFilter.init(GuiceFilter.java:172) 在 org.mortbay.jetty.servlet.FilterHolder.doStart(FilterHolder.java:97) 在 org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java :50) 在 org.mortbay.jetty.ServletHandler.initialize(ServletHandler.java:662) 在 org.mortbay.jetty.servlet.Context.startContext(Context.java:140) 在 org.mortbay.jetty.webapp。WebAppContext.startContext(WebAppContext.java:1250) 在 org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517) 在 org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467) 在 org .mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) 在 org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) 在 org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) ) 在 org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) 在 org.mortbay.jetty.Server.doStart(Server.java:224) 在 org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle. java:50) 在 com.google.appengine.tools.development.JettyContainerService.startContainer(JettyContainerService.java:186) 在 com.google.appengine.tools.development.AbstractContainerService。com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java:169) 的启动(AbstractContainerService.java:157) com.google.appengine.tools.development.gwt.AppEngineLauncher.start(AppEngineLauncher.java: 119) com.google.gwt.dev.DevMode.doStartUpServer(DevMode.java:500) com.google.gwt.dev.DevModeBase.startUp(DevModeBase.java:1055) com.google.gwt.dev.DevModeBase .run(DevModeBase.java:804) at com.google.gwt.dev.DevMode.main(DevMode.java:309) 原因:java.lang.NoClassDefFoundError: javax/validation/ValidationException at com.google.web.bindery .requestfactory.server.ServiceLayer.create(ServiceLayer.java:74) 在 com.google.web.bindery.requestfactory.server.RequestFactoryServlet.(RequestFactoryServlet.java:88) 在 com.google.web.bindery.requestfactory.server。请求工厂Servlet。(RequestFactoryServlet.java:74) 在 com.google.web.bindery.requestfactory.server.RequestFactoryServlet$$FastClassByGuice$$54253391.newInstance() 在 com.google.inject.internal.cglib.reflect.$FastConstructor.newInstance(FastConstructor. java:40) com.google.inject.inject.internal.DefaultConstructionProxyFactory$1.newInstance(DefaultConstructionProxyFactory.java:60) com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:85) com.google.inject。 internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:254) 在 com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46) 在 com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java :1031) 在 com.google.inject.internal.ProviderToInternalFactoryAdapter。get(ProviderToInternalFactoryAdapter.java:40) at com.google.inject.Scopes$1$1.get(Scopes.java:65) at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:40) at com.google .inject.internal.InjectorImpl$4$1.call(InjectorImpl.java:978) at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1024) at com.google.inject.internal.InjectorImpl$4.get( InjectorImpl.java:974) ... 26 更多原因:java.lang.ClassNotFoundException: javax.validation.ValidationException at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method)在 java.net.URLClassLoader.findClass(Unknown Source) 在 java.lang.ClassLoader.loadClass(Unknown Source) 在 com.google.appengine.tools.development.IsolatedAppClassLoader。loadClass(IsolatedAppClassLoader.java:176) at java.lang.ClassLoader.loadClass(Unknown Source) ... 42 更多

我可能遗漏了一些东西,但我不知道在哪里看...谢谢

0 投票
1 回答
497 浏览

guice - 在 Guice Servlet 中清除会话范围的对象

目前我有一个名为 MySessionData 的会话范围对象。最初注销时我只是打电话

问题是现在我们有多个会话范围的对象,而注销只需要清除其中的一个(MySessionData)。有谁知道在 Guice 中清除单个 Session 范围对象的方法。如果这是使用传统会话对象,我只需在会话映射中将键值对设置为 null。

0 投票
1 回答
749 浏览

jqgrid - Guice servlet 405 错误:似乎没有将 MediaType.APPLICATION_JSON 的 Content-type 设置为“text/json”

我正在从 jQGrid 调用具有以下绑定的 Guice servlet:

直接请求url,可以看到json。当 jqgrid 执行请求时,我得到 405 method not allowed response。当返回页面没有将 Content-type 设置为“text/json”(jqgrid 在这里不是很灵活)时,我已经看到过这种情况。

这是请求:键值请求 POST /myapp/json/jqgrid/json ... HTTP/1.1 x-requested-with XMLHttpRequest Accept-Language en-us Referer http://localhost:8080/myapp/myPage ... Accept application/json, text/javascript, / Content-Type application/x-www-form-urlencoded Accept-Encoding gzip, deflate User-Agent Mozilla/5.0 (兼容; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)主机 localhost:8080 Content-Length 63 Connection Keep-Alive Cache-Control no-cache

这是响应:键值响应 HTTP/1.1 405 方法不允许服务器 Apache-Coyote/1.1 允许 GET,OPTIONS,HEAD Content-Type text/html;charset=utf-8 Content-Length 1034

关于如何让 guice servlet 将 Content-type 设置为“text/json”并允许响应的任何想法?

0 投票
1 回答
3166 浏览

jakarta-ee - Guice 的 @Schedule 等效项:以指定的时间间隔在 @singleton 中执行任务

我正在使用 Google Guice、Guice servlet 和 Jersey。我想找到一种在 JVM 中运行计划作业的简单方法。我发现了以下 EJB 示例,它创建了“带有@Schedule 方法的@Singleton EJB,它以指定的时间间隔在后台执行”。这正是我想做的,但希望看到一种简单的方法来做到这一点,而无需添加 EE 依赖项。

Java邮件如何根据条件自动发送电子邮件