问题标签 [servlet-3.1]

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 回答
1213 浏览

java - WriteListener (servlet 3.1) 语义

假设我正在将数据块写入HttpServletResponse. 所以我的方法接收一个字节数组,我把它写到response.getOutputStream(),然后我释放线程。当我收到另一块数据时,我的方法将被唤醒,它会getOutputStream()再次写入。最后,我打电话给AsyncContext.complete().

现在,WriteListener.onWritePossible()规范说:

当可以写入数据时,该方法将由容器第一次调用。当且仅当 ServletOutputStream 上的 isReady 方法(如下所述)返回 false 时,容器随后将调用 onWritePossible 方法。

似乎当容器调用此方法时,我已经需要在某处缓冲我的响应,因为onWritePossible()可能永远不会再被调用。因此,对于前面的示例,我需要将收到的所有数据块写入缓冲区(一个字节数组,或者如果缓冲区足够大,则可能是一个临时文件),如果onWritePossible()在我的响应完成之前调用,应该我愿意?阻塞线程直到我获得所有响应数据?

0 投票
1 回答
721 浏览

jsf - 命令不以多部分形式触发 (JSF 2.2)

我一直在尝试使用 JSF 2.2 中的新 h:inputFile,但我无法让它工作。自从我更改了“h:form”标签的“enctype”属性后,该操作就不再被调用了。

我已经从所有过滤器和 Web 库中删除了我的应用程序,但它仍然无法正常工作。

以下是文件内容,以使其更清晰:

web.xml:

faces-config.xml:

表单片段:

和托管bean:

我创建了一个阶段侦听器来调试请求,并且请求直接从 RestoreView 进入 RenderResponse 阶段。

关于如何解决这个问题的任何想法?

PS:我使用的是 WildFly 8.0.0.Alpha4。

0 投票
0 回答
278 浏览

spring - 使用 servlet 3 和 spring 3.2.3 的 i18n 问题

我正在使用 spring 3.2.3、servlet 3 和 maven 3.1,所以我正在尝试使用 i18n,但由于某些黑暗的原因,我无法启动我的应用程序说:

但我的默认语言是“EN”,我有这两个属性的消息。

代码:

WebConfig.java

索引.jsp

消息(当前路径:src/main/resources)

messages_en.properties

messages_pt.properties

由于我的默认语言是 EN,我不知道它为什么要求 PT,尽管即使我忽略了这一点,我也有包含正确消息的 messages_pt.properties。

完整的堆栈跟踪:

0 投票
0 回答
665 浏览

java - 将配置的值注入 Spring 4 WebApplicationInitializer

我有一个使用 Spring 4 和 servlet-api 3.1 的 Web 应用程序,我在其中使用带注释的 java-config Spring 应用程序上下文AbstractAnnotationConfigDispatcherServletInitializer来初始化DispatcherServlet和。应用程序的特定环境配置是使用with注释来实现的。这一切都很好。我的问题是:ContextLoaderListener@ConfigurationPropertySourcesPlaceholderConfigurer@PropertySource

我现在处于Filter[] getServletFilters()将过滤器添加到 servlet 上下文的优先位置。但是,对于其中一些过滤器的 init-param 值,我真的希望能够访问上述一些特定于环境的配置值。不幸的是,因为环境的东西是在应用程序上下文中进行后处理的,所以我似乎无法在这里简单地重用相当简洁的 Spring 配置注入。如果可能的话,我想避免在其他地方动态配置的硬编码值或必须有效地复制 Spring 提供的环境配置逻辑。

有没有人想出一种巧妙的方法来将与应用程序上下文共享的配置值注入到WebApplicationInitializer?

0 投票
3 回答
2655 浏览

java - 为什么在 HttpServletResponse 中找不到方法 setContentLengthLong(long len)?

我在 Eclipse 中,前一段时间我正在使用这种方法:http://docs.oracle.com/javaee/7/api/javax/servlet/ServletResponse.html#setContentLengthLong(long)现在我无法管理这行得通。我正在使用 JDK 1.7,并且在中插入了以下依赖项pom.xml

我已经用 Maven 清理并更新了项目。我什至关闭并打开了 Eclipse。当我写:

我得到:

我究竟做错了什么?

0 投票
2 回答
1687 浏览

jakarta-ee - What is the benefit of Async Servlets

I was reading up on Async servlets 3.1

It is said that the thread that sends the request is freed up when there is lot of time consuming operations to be done for e.g. fetching long list of data from the database.

I am not able to understand the benefit here because anyways there will be a new thread allocated to process the database connection and response processing even if the initial thread that was responsible for the request is freed.

So how is Async servlet more beneficial than thread per request model that we had earlier.

0 投票
1 回答
4149 浏览

jakarta-ee - 警告:JACC:对于 URL 模式 xxx,除了以下方法之外的所有方法都被发现:POST、GET

javax.faces.webapp.FacesServlet文档中,提到了,

允许的 HTTP 方法

JSF 规范只要求使用 GET 和 POST http 方法。如果您的 Web 应用程序不需要任何其他 http 方法,例如 PUT 和 DELETE,请考虑使用<http-method><http-method-omission>元素限制允许的 http 方法。有关使用这些元素的更多信息,请参阅 Java Servlet 规范的安全性。


我的应用程序确实不依赖于其他 HTTP 方法(除了GETPOST)。因此,我试图使用<http-method>(or <http-method-omission>) 来排除除GETand之外的所有方法POST

在 web.xml 中,JAAS Servlet 安全约束配置如下。

使用这些元素,

我希望所有其他 HTTP 方法都被禁止。


但是,GlassFish Server 4.1 在服务器终端上记录以下警告。

警告:JACC:对于 URL 模式/user_side/*,除了以下方法之外的所有方法都被发现:POST、GET

警告:JACC:对于 URL 模式/admin_side/*,除了以下方法之外的所有方法都被发现:POST、GET

这是什么意思?


另外,不是在所有<security-constraint>元素中都这样做,而是可以全局配置,以便它可以应用于应用程序中的所有资源,并且可以省略所有除了GETPOSTHTTP 请求,即全局应用于应用程序 - 也许通过使用更通用的专用url 模式之类的/*


这里有一个例子。

上面的元素表明由 url 模式 /test.jsp 引用的资源,当被除 GET 之外的所有 http 方法访问时,应该被限制为只能由属于角色 dev 的经过身份验证的用户查看。请注意,安全约束不适用于 http 方法 GET,而仅适用于其他方法(POST、HEAD、PUT 等)。

我发现强文本中的最后一句话令人困惑。这是否意味着使用GET请求,给定 url-pattern 中列出的资源可以被匿名用户访问,因为这意味着“安全约束不适用于 http-method GET ”?

0 投票
1 回答
2063 浏览

jetty - 带有异步 Servlets 的嵌入式 Jetty 9 在 org.eclipse.jetty.server.Request.extractFormParameters(Request.java:326) 处抛出 NullPointerException

我有一个使用嵌入式 Jetty 9.2.6 和带注释的异步 Servlet 的应用程序(并且我使用 Facelets 创建接口模板)。当我使用asyncSupported = true.

这是随机异常的一个堆栈跟踪:

这是堆栈跟踪中引用的我的 Servlet:

以下是我启动嵌入式 Jetty 的方法:

web.xml 文件:

这是一个 Maven 项目,所以这里是我的 POM.xml:

有谁知道为什么会这样?

如果您需要更多信息,请告诉我。

提前致谢!

0 投票
1 回答
3863 浏览

tomcat - 从 web.xml 迁移到基于 Java 的配置 - 无法启动 Tomcat 8

我正在尝试将我的应用程序的 web.xml 迁移到基于 Java 的配置。我们使用的是 spring 4.1、Java 7、Servlet 3.1、Tomcat 8 和 Eclipse Luna。Web 服务框架是 Jersey 2.14。

我主要使用以下指南:http ://www.robinhowlett.com/blog/2013/02/13/spring-app-migration-from-xml-to-java-based-config/

我创建了遵循 web.xml 配置的 WebApplicationInitializer,删除了 web.xml,将 Maven 配置为不查找 web.xml,并成功执行了 mvn clean install。

当我尝试启动 tomcat 时,出现以下错误:

我试图清理 tomcat 目录,但它没有帮助,看起来我错过了一些东西,因为 AFAIK Tomcat 8 应该是基于 Java 的配置友好的。

我错过了迁移的一步吗?

前 web.xml (按预期工作):

WebApplicationInitializer 实现:

0 投票
3 回答
1190 浏览

groovy - Groovy + Dropwizard 和 servlet 3.1.0 问题

我正在尝试使用基于 Dropwizard 框架 0.8.1 的 groovy 2.4.1 创建一个简单的 REST 服务器。我用于这个概念证明的 groovy 脚本是:

服务器启动,但在资源 /hello-world 上的请求时,抛出以下异常:

这是因为 groovy 类路径具有 groovy-servlet-2.4.3.jar 和 2.4 servlet 版本,而 dropwizard 0.8.1 具有 javax.servlet-api-3.1.0.jar。

你能告诉我如何替换 groovy jar 或先加载所需的版本吗?