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

guice - Guice:如何绑定已绑定对象动态获取的类?

我正在使用 Guice 开发一个小型 Web 框架。我有一个Router对象,一旦初始化,就会公开一个getControllerClasses()方法。我必须遍历所有这些动态返回的类以使用 Guice 绑定()它们。

我绑定路由器:

但是,我怎样才能在一个模块中获得绑定的路由器实例,所以我也可以绑定它的getControllerClasses()方法返回的类?

我能够在模块中获取路由器实例的唯一方法是将此实例绑定到第一个模块中,然后将其注入第二个模块中,在 setter 上使用 @Inject :

模块 1

模块 2

方法被调用,Router 实例初始化良好,但是控制器类的绑定失败!在 Guice 生命周期的这一步,module2 的binder实例似乎为 NULL。

如何绑定动态获取的类,这些类已由已绑定的对象返回?

0 投票
1 回答
637 浏览

java - guice servlet 不是单例

可怕的事情正在发生

我的项目中有 2 个 servlet - 其中一个只是有一个 post 方法并负责处理文件上传。我最近添加了另一个 - 它有一个 get 和一个 post 方法。

这是第二个 servlet 代码

现在 - 这就是让我

出于某种原因——即使这被标记为@Singleton——servlet 地址肯定会以不同的方式返回。当我在我的 post 方法中点击一个空指针时,我最初注意到了这一点——每当我调用 get 方法时,我返回的 servlet 实例都会填充所有字段。每当我调用 post 方法时,我返回的 servlet 实例(它是一个不同的实例)没有填充字段(只是 null,似乎它们没有被注入)。

我真的很难弄清楚这里发生了什么。似乎这个 servlet 的一个实例是在 guice 上下文之外创建的。如果重要的话——我们使用的是 JBoss 7.1

(对不起所有的XXX,不知道我是否可以发布真实姓名)


这是我的 guice 设置的其余部分

这是servlet模块

0 投票
0 回答
46 浏览

gwt - 从 servlet 返回的文本中丢失 "\n(引号和换行符序列)

我正在从一个运行良好的 servlet 返回一些文本,但以 " 字符结尾的行除外。这些行会导致引号和后面的换行符丢失。您有什么想法可能导致或解决此问题吗?

0 投票
1 回答
996 浏览

java - 用 guice 覆盖球衣资源

我正在寻找一种方法来覆盖与 GuiceServletContextListener 中的 guice 绑定的球衣资源。我正在尝试使用的代码:

但不幸的是,这不起作用,虽然我不能将球衣资源绑定到 guice 中,比如接口到实现,只能bind(BookImpl.class)工作。但是这样的绑定是不可能被覆盖的。如果我尝试覆盖bind(BookImpl.class)bind(BookUserImpl.class)会得到一个错误Conflicting URI templates. The URI template /books/{key} for root resource class.,而 @Path 应该是唯一的。那么我的用例有什么解决方案吗?

0 投票
2 回答
1641 浏览

java - 如何使用 Guice 3.0 为 JSP 提供服务?

我正在尝试为 Guice 提供 JSP。我没有找到有关如何执行此操作的任何基本示例!

我的设置:

web.xml

org.example.Bootstrap(类似...)

org.example.BootstrapModule(类似...)

MainServlet中,我执行以下操作:

或者

或者

或者

我的test.jspwebapp/test.jsp(我使用 Maven)。

它不起作用!我总是遇到以下错误:

Guice 传递给 org.apache.jasper.servlet.JspServlet 的信息似乎不是 JSP 工作所需的信息。

我错过了什么?我什至必须手动指定 org.apache.jasper.servlet.JspServlet 吗?从 Guice 正确地提供 JSP 需要什么?

0 投票
1 回答
935 浏览

google-app-engine - 在 Java GAE 后端 Servlet 中使用 Guice 注入

我在我的 GAE Java 应用程序中遇到了一个难题:我正在尝试编写一个将由 GAE 后端处理的 servlet,它还必须使用Guice 依赖注入来启动所有 servlet 的字段。我尝试了多种方法,但似乎没有一个对我有用。

我首先尝试在 servlet 中使用Sitebricks,但似乎这样做会导致 GAE 在查询后端 URL 时无法将该类检测为合法 servlet:始终从后端返回404 Not Found 。尽管如此,我确信该类已使用 Sitebricks 注释正确注释,因为相同的 URI 路径适用于前端实例。

接下来,我尝试使用Guice Servlet Extension(请参阅此链接);在我创建全局的类中Injector,我使用了这个绑定:

不幸的是,发生了与 Sitebricks 完全相同的问题:我在后端返回 404 错误,但在前端没有。

最后一种可行的方法是在 中配置 servlet-mapping web.xml。传统的方法。这最终允许我的后端检测 URI 映射(这与Google 的 Java GAE 后端文档中所写的内容一起出现:“后端与主应用程序版本共享 web.xml 中定义的 servlet。”)。不幸的是,我无法使用此过程利用 Guice 注入,因此我非常不希望使用web.xml.

我什至尝试结合第二种和第三种方法:同时使用 Guice Servlet Extension 和 web.xml。这导致从后端返回 500 错误并出现以下错误:

最后要注意的一件事:我将backends.xml文件配置为 have <public>true</public>,但我正在通过从 GAE 应用程序的前端查询后端来测试这些 HTTP 请求调用。另外,请注意,我的前端实例正在使用BackendService此处为 javadoc)正确检索后端地址。

我之前问过的其他相关 Stackoverflow 问题

0 投票
1 回答
166 浏览

guice - 我可以用 GUICE 做到这一点吗

假设我定义了以下类:

此外,在我的一个 Guice 模块中,我有一些愚蠢的绑定:

现在我需要创建一个 ServletModule,它定义了两个具有不同参数的“XServlet”实例。对于“/x”模式,我希望它使用绑定到 A.class 并使用“a1”注释的任何内容,对于“/y”模式,我希望它使用绑定到 A.class 并使用“a2”注释的任何内容。就像是:

应该有什么而不​​是'???'?有可能吗?

0 投票
1 回答
1218 浏览

regex - 如何使用正则表达式将所有请求路由到 servlet *except* 静态文件“/(images|css|jsp|html)/.*”

使用 google guice,我希望所有服务器请求 (/*) 都流向我的 servlet 文件,静态内容除外。如果需要,我可以将静态内容放入 /static 文件夹。我只需要接收到根的 serverlet 请求。

这是有效的代码:

但是,如果我取出 /server,我的静态内容也会被路由到 MyTemplateResource。例如:

即使 servlet url 可以从根目录开始,在将 Servlet 内容路由到一个或多个 Resource 文件时,允许所有静态内容自由流动的最佳方法是什么?

0 投票
1 回答
1196 浏览

jsp - 使用 Jersey-Guice-Shiro 堆栈时,Jetty 找不到 login.jsp

(2013 年 1 月 2 日更新)我现在在https://github.com/AndyWi/GuiceJerseyJettyShiroExample将所有代码和 pom.xml 添加到 github (更新结束)

我正在尝试使用 Shiro 将基于表单的身份验证添加到我的简单应用程序中。该应用程序使用 Guice 3.0、Jersey 1.16 和 Shiro 1.2.1,在嵌入式 Jetty 9.0.0.M4 上运行。

我的问题是(据我所知)Shiro 需要通过 Guice 提供 login.jsp,然后添加到 Shiro 的过滤器链中。但是,当我这样做时,Jetty 找不到 login.jsp。当我从 Guice 过滤器中排除 login.jsp 时,Jetty 可以找到该 jsp,但是 Shiro 无法使用它,因此身份验证不起作用。

因此,在我的引导代码中,我使用这一行将 login.jsp 添加到 Guice 过滤器:

在我的 ShiroWebModule 中,我像这样添加 login.jsp:

我花了很长时间寻找答案,却没有任何暗示其他人也有同样的问题——这意味着我显然做错了一些非常简单的事情!但我无法弄清楚它是什么。如果有人能帮助我克服这个问题,我将不胜感激。

我已经将我的项目简化为一个小例子来演示这个问题。这一切应该做的就是接受 /api/uuid 的 rest url,将用户重定向到 login.jsp,接受任何用户名/密码组合进行身份验证,然后从 /api/uuid 服务返回一个新的 UUID;用户还应保持登录状态以备将来请求。这是完整的代码,希望它能帮助那里的人发现问题:

引导程序:

例如GuiceServletContextListener:

例如JerseyServletModule:

例如ShiroWebModule:

例如授权领域:

Uuid服务:

UuidDao:

登录.jsp:

好的,我想就是这样。我意识到这很长,所以非常感谢你读到这里。这一直让我发疯,所以你能给我的任何帮助将不胜感激!

谢谢,安迪。

0 投票
1 回答
301 浏览

servlets - Apache Shiro Guice Servlet 为 AUTHC 过滤器配置 redirectUrl

如何为 Shiro 提供的 AUTHC 过滤器配置重定向 URL?我知道如何在 INI 文件中配置它,但我需要知道如何在我的 ShiroWebModule 扩展中配置它。谢谢!