问题标签 [servlet-3.0]

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 投票
6 回答
119478 浏览

java - 如何仅使用注释(无 web.xml)设置 JAX-RS 应用程序?

是否可以仅使用注释来设置 JAX-RS 应用程序?(使用 Servlet 3.0 和 JAX-RS Jersey 1.1.0)

我试过了,但没有运气。web.xml似乎需要使用一些。


配置 A(工作,但有 web.xml 配置)

web.xml

爪哇


配置 B(不工作,抛出异常)

后者似乎坚持认为 Application 将是 Servlet 的子类(例外情况不容猜测)


问题

  1. 为什么 web.xml 定义有效但注释无效?有什么不同?

  2. 有没有办法让它工作,例如有一个没有 web.xml 的 JAX-RS 应用程序?

0 投票
0 回答
1105 浏览

java - Servlet 3.0 或 Glassfish 问题?Web 应用在注释中忽略过滤器的异步支持

我在我的网络应用程序中添加了一个过滤器(它已经支持异步操作),并忘记在过滤器上插入正确的注释以保留异步支持。容易解决的问题。我将以下注释放在过滤器类中,最终看起来像这样:

但是,重新部署后,异步操作仍然不受支持,给我这个错误:

请求在不支持异步操作的过滤器或 servlet 范围内

我能够通过删除注释并将其等效项放在 web.xml 中来纠正问题:

我感到困惑的是容器似乎尊重 servlet 文件中的 asyncSupported 注释,但不用于过滤器。是否有特定原因,或者这是 GlassFish 3.0 错误?

0 投票
2 回答
3616 浏览

java - 使用 Servlet 3.0 编程安全性时如何处理会话超时

关于 Servlet 3.0 编程安全性,当会话超时时,无法调用HttpServletRequest#logout().

用户是否保持登录到 JAAS?

如果是这样,在会话超时后处理注销 JAAS 的最佳实践是什么?

容器如何处理用户后续的再次登录请求并在会话超时后创建新会话?

顺便说一句,在使用 Servlet 3.0 编程安全性时,使用以下三种方法来处理会话超时的优缺点是什么:

  1. HttpSessionListener#sessionDestroyed()
  2. 制作@ManagedBean @SessionScoped LoginManager工具HttpSessionBindingListener并在valueUnbound.
  3. 使用 @PreDestroy 注释 LoginManager 中的方法。

任何其他建议的方法/最佳实践建议肯定会受到赞赏。

0 投票
2 回答
2065 浏览

java - 在 Servlet 3.0 API 中继续或暂停和恢复以与客户端通信?

我们正在将 Swing 两层应用程序迁移到 Web 应用程序(tomcat、Spring MVC、extJS,如果有任何区别的话)。

我们在应用程序中找到了这样的代码(简化的 Javaesc 伪代码)。

即在一些处理过程中,开始了与用户的一些交互。显然,我不能直接使用 servlet 来做到这一点。

可以很好地处理这个问题的一件事是延续。所以我检查了我是否可以使用这些,并惊讶于实际上有支持这种东西的库:Java 中的延续

在检查该问题中提到的库及其答案时,我遇到了这个声明

一旦规范最终确定,延续将被标准 Servlet-3.0 可暂停请求所取代。Jetty-7 的早期版本现已推出,可实现建议的标准挂起/恢复 API

但我找不到如何使用 Servlet 3.0 API 执行上述操作的示例

所以问题是:

  1. 是否可以使用 Servlet-3.0 API 完成上述操作,而无需将上面的代码完全重构为两个或多个单独的操作

  2. 如果上面的答案是肯定的:如何?是否有针对此或类似用例的完整示例?

  3. 我应该使用 Continuations 还是 Servlet API?或者如果不能直接回答这个决定取决于什么条件?

0 投票
1 回答
3354 浏览

weblogic - WebLogic 12c 中的动态添加 servlet 不起作用?

我在下面有两个 servlet,可以很好地与 Tomcat7/Indigo 配合使用,当我访问 myhost/DynamicAddServlet/tobeadded.jsp 时,它将打印“已添加”。

但是它们在 WebLogic 12c 中不起作用,这在 WebLogic 12c 中可能吗?

AddServletServlet

TobeAddedServlet

WebLogic 12c 中的堆栈跟踪:

提前致谢,

河马

0 投票
2 回答
8767 浏览

java - 在庞大的项目环境中使用 Web 片段(Servlet API 3.0)

我们最近迁移到 Servlet API 3.0。由于我们正在开发一个有时需要web.xmlweb.xml.

Servlet API 3.0 引入了新的Web Fragments,这使得这种行为更加松散耦合和动态。我创建了一个web-fragment.xml并将我们所有的东西从 web.xml 中移到那里。所以项目现在只需要定义以下web.xml和他们自己的附加声明。

我们必须使用metadata-complete="false"来启用 JAR 中的片段搜索(我们的框架有web-fragment.xmlin META-INF/.

由于我们对其他框架和库有许多依赖项(大约 80-90 个),并且metadata-complete="false"还触发了搜索注释,因此搜索所有库需要长达12 秒的时间,这是不可接受的。

该机制运行良好,我喜欢我们与框架更加分离的事实,但启动时间是致命的!此外,我们必须将 Tomcat 的可用内存从 增加-Xms256m -Xmx512m-Xms512m -Xmx1024m以使其在没有得到 a 的情况下启动java.lang.OutOfMemoryError: Java heap space(由于 Tomcat 的注释处理器实现效率低下(缓存了大约 50.000 个类))。


metadata-complete="true"我知道我们可以禁用库中的注释搜索,但由于我们主要使用没有标志的第三方,这也不是一个选项。

我们可以做些什么来禁用对注释的搜索吗?或者我们可以强制 Servlet 容器只在声明的库中搜索web-fragment.xml?

我真的很想使用新的 web 片段功能,但是随着启动时间和内存的增加,这是不可能的。

0 投票
2 回答
2295 浏览

osgi - 在 Servlet 3.0 服务器(如 Tomcat 7)中使用 Felix

我正在将应用程序转换为 OSGi 环境。此应用程序使用异步 servlet(因此 Servlet 3.0.0+)将传入请求与其线程分离,并将请求排队。

据我所知,所有 servlet 桥接的 Felix 包都使用 servlet 2.x,所以我不能使用 servlet 3.0 特定的东西。

真的吗?有没有办法在 Felix 中使用异步 servlet?如果没有,是否有计划?

0 投票
1 回答
2122 浏览

java - 优化将 StringBuilder 的内容写入 ServletResponse

关于优化我为将 StringBuilder 的全部内容写入 ServletResponse 而创建的方法,我想获得一些评论。

我这样做是为了避免在将其传递给 out.write() 方法之前一次性创建巨大的字符串。在我的情况下,StringBuilder 的内容长度在某些情况下会达到几百万个字符。

我希望它写一条(不是分块的)消息。因此,我想知道相对于它可以容纳的字符数(或字符串的长度)建立响应的缓冲区大小有多准确?

目前,我正在获取当前缓冲区大小并使用它,就好像它表达了它可以容纳的多个字符一样,如何正确评估缓冲区大小?另外我不包括标题大小,我怎么能实现它

我想将其性能优化到最大(因此它工作得最快),任何建议都非常感谢。或者也许有一种更好的方法可以将巨大的 StringBuilder 内容写入 ServletResponse?

0 投票
3 回答
5076 浏览

php - 存在标头时从 GET 响应解析 JSON

我正在尝试json_decode从 GET 请求收到的响应到我的服务器端 API,但我得到一个空字符串。我是否会正确假设因为响应包含 JSON 解码器无法处理的所有标头信息?这是我从服务器得到的完整响应:

在将响应发送给客户端之前,是否需要删除 servlet 中的标头?

0 投票
0 回答
310 浏览

resources - 如何获取web-fragment的jar文件名

在 servlet 3 中,web-fragments 是部署在 WAR 的 WEB-INF/libs 下的 jar。web-fragments的资源将被合并交易,因为它们是WAR的资源。但这并不适合所有情况。

比如我想获取web-fragment的WEB-INF目录下的一些资源,我不能直接读取,因为不管是jar还是war,WEB-INF下的资源根本无法通过URL访问。更糟糕的是,在 ServletContext 的帮助下读取此类资源的典型方法不适用于 Web 片段,因为它们是 jar,而不是真正的目录结构。

最后我找到了一个解决方案,用 ClassLoader 读取它们,无论如何我仍然需要确切的资源名称,我不能做一些事情,比如给我目录 WEB-INF/myconfig/ 下的所有 xml 文件我认为唯一的方法是扫描所有网络-fragment jars,在内存中建立目录结构。但是我仍然不知道如何获取所有网络片段的 jar 名称。如果我不能得到它们,我必须扫描 WEB-INF/libs 下的所有 jar。有没有更好的解决方案?

谢谢