问题标签 [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.
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 的子类(例外情况不容猜测)
问题
为什么 web.xml 定义有效但注释无效?有什么不同?
有没有办法让它工作,例如有一个没有 web.xml 的 JAX-RS 应用程序?
java - Servlet 3.0 或 Glassfish 问题?Web 应用在注释中忽略过滤器的异步支持
我在我的网络应用程序中添加了一个过滤器(它已经支持异步操作),并忘记在过滤器上插入正确的注释以保留异步支持。容易解决的问题。我将以下注释放在过滤器类中,最终看起来像这样:
但是,重新部署后,异步操作仍然不受支持,给我这个错误:
请求在不支持异步操作的过滤器或 servlet 范围内
我能够通过删除注释并将其等效项放在 web.xml 中来纠正问题:
我感到困惑的是容器似乎尊重 servlet 文件中的 asyncSupported 注释,但不用于过滤器。是否有特定原因,或者这是 GlassFish 3.0 错误?
java - 使用 Servlet 3.0 编程安全性时如何处理会话超时
关于 Servlet 3.0 编程安全性,当会话超时时,无法调用HttpServletRequest#logout()
.
用户是否保持登录到 JAAS?
如果是这样,在会话超时后处理注销 JAAS 的最佳实践是什么?
容器如何处理用户后续的再次登录请求并在会话超时后创建新会话?
顺便说一句,在使用 Servlet 3.0 编程安全性时,使用以下三种方法来处理会话超时的优缺点是什么:
HttpSessionListener#sessionDestroyed()
- 制作
@ManagedBean @SessionScoped LoginManager
工具HttpSessionBindingListener
并在valueUnbound
. - 使用 @PreDestroy 注释 LoginManager 中的方法。
任何其他建议的方法/最佳实践建议肯定会受到赞赏。
java - 在 Servlet 3.0 API 中继续或暂停和恢复以与客户端通信?
我们正在将 Swing 两层应用程序迁移到 Web 应用程序(tomcat、Spring MVC、extJS,如果有任何区别的话)。
我们在应用程序中找到了这样的代码(简化的 Javaesc 伪代码)。
即在一些处理过程中,开始了与用户的一些交互。显然,我不能直接使用 servlet 来做到这一点。
可以很好地处理这个问题的一件事是延续。所以我检查了我是否可以使用这些,并惊讶于实际上有支持这种东西的库:Java 中的延续
在检查该问题中提到的库及其答案时,我遇到了这个声明
一旦规范最终确定,延续将被标准 Servlet-3.0 可暂停请求所取代。Jetty-7 的早期版本现已推出,可实现建议的标准挂起/恢复 API
但我找不到如何使用 Servlet 3.0 API 执行上述操作的示例
所以问题是:
是否可以使用 Servlet-3.0 API 完成上述操作,而无需将上面的代码完全重构为两个或多个单独的操作
如果上面的答案是肯定的:如何?是否有针对此或类似用例的完整示例?
我应该使用 Continuations 还是 Servlet API?或者如果不能直接回答这个决定取决于什么条件?
weblogic - WebLogic 12c 中的动态添加 servlet 不起作用?
我在下面有两个 servlet,可以很好地与 Tomcat7/Indigo 配合使用,当我访问 myhost/DynamicAddServlet/tobeadded.jsp 时,它将打印“已添加”。
但是它们在 WebLogic 12c 中不起作用,这在 WebLogic 12c 中可能吗?
AddServletServlet
TobeAddedServlet
WebLogic 12c 中的堆栈跟踪:
提前致谢,
河马
java - 在庞大的项目环境中使用 Web 片段(Servlet API 3.0)
我们最近迁移到 Servlet API 3.0。由于我们正在开发一个有时需要web.xml
对web.xml
.
Servlet API 3.0 引入了新的Web Fragments,这使得这种行为更加松散耦合和动态。我创建了一个web-fragment.xml
并将我们所有的东西从 web.xml 中移到那里。所以项目现在只需要定义以下web.xml
和他们自己的附加声明。
我们必须使用metadata-complete="false"
来启用 JAR 中的片段搜索(我们的框架有web-fragment.xml
in 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 片段功能,但是随着启动时间和内存的增加,这是不可能的。
osgi - 在 Servlet 3.0 服务器(如 Tomcat 7)中使用 Felix
我正在将应用程序转换为 OSGi 环境。此应用程序使用异步 servlet(因此 Servlet 3.0.0+)将传入请求与其线程分离,并将请求排队。
据我所知,所有 servlet 桥接的 Felix 包都使用 servlet 2.x,所以我不能使用 servlet 3.0 特定的东西。
真的吗?有没有办法在 Felix 中使用异步 servlet?如果没有,是否有计划?
java - 优化将 StringBuilder 的内容写入 ServletResponse
关于优化我为将 StringBuilder 的全部内容写入 ServletResponse 而创建的方法,我想获得一些评论。
我这样做是为了避免在将其传递给 out.write() 方法之前一次性创建巨大的字符串。在我的情况下,StringBuilder 的内容长度在某些情况下会达到几百万个字符。
我希望它写一条(不是分块的)消息。因此,我想知道相对于它可以容纳的字符数(或字符串的长度)建立响应的缓冲区大小有多准确?
目前,我正在获取当前缓冲区大小并使用它,就好像它表达了它可以容纳的多个字符一样,如何正确评估缓冲区大小?另外我不包括标题大小,我怎么能实现它?
我想将其性能优化到最大(因此它工作得最快),任何建议都非常感谢。或者也许有一种更好的方法可以将巨大的 StringBuilder 内容写入 ServletResponse?
php - 存在标头时从 GET 响应解析 JSON
我正在尝试json_decode从 GET 请求收到的响应到我的服务器端 API,但我得到一个空字符串。我是否会正确假设因为响应包含 JSON 解码器无法处理的所有标头信息?这是我从服务器得到的完整响应:
在将响应发送给客户端之前,是否需要删除 servlet 中的标头?
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。有没有更好的解决方案?
谢谢