问题标签 [embedded-tomcat-8]

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

java - servlet 不将会话属性转发给 jsp

使用嵌入式 tomcat,此代码有效:

小服务程序

JSP

它设置属性,然后在 servlet的 jsp 页面test上打印出来。/exampleexample.jsp


但是,如果我尝试在会话中设置属性,那么我不会得到相同的结果,相反,我会null在使用这个时得到:

小服务程序

JSP

0 投票
2 回答
6911 浏览

port - 配置 Spring Boot + tomcat 8 在非特权端口上运行

我有一个绑定到端口 8080 (http) 和 8888 (https) 的工作 spring boot + tomcat8 嵌入式应用程序。现在我正在寻找一种方法来配置应用程序以运行

a) 在特权端口上,即低于 1024 的端口,即端口 80 和 443

b) 应用程序应在非 root 用户帐户下运行。

c) 操作系统环境可以是任何 Linux 发行版,例如:debian/ubuntu 或 OpenBSD 发行版。

d) 解决方案最好稍后通过 Web 界面(即一些脚本)进行配置。

到目前为止,我在 INTERNET 上找到的只是一个配置非嵌入式 tomcat 实例和“authbind”的手册。但是我有一个嵌入式tomcat。“authbind”的手册页说:

“您必须使用 authbind 调用该程序。authbind 将设置一些环境变量,包括一个 LD_PRELOAD,如果系统配置为允许,它将允许程序(包括它可能运行的任何子进程)绑定到低编号(<512)端口。“</p>

我发出“ps - aux”,我得到了运行应用程序的用户名。我已将嵌入式 tomcat 配置为在端口 80 和 443 上运行,即在 cli 中发出命令:

现在我如何调用“authbind”下的嵌入式tomcat。如果“authbind”不是这个问题的正确解决方案,那么如何使用 spring boot 解决这个问题。

我收到的错误消息是:

ADDTION 1 我找到了一种如何从命令行执行此操作的方法,即从 spring 我做 maven build,目标设置为“package”,然后我转到我的 jar/war 文件所在的目标文件夹,然后我做

该应用程序绑定到端口 80 和 443,但不知何故我的 mvc thymeleaf 模板搞砸了。我需要通过 spring sts 自动化这个过程

0 投票
1 回答
6486 浏览

file-upload - Spring-Boot + Tomcat 8.0.3 FileUpload 错误无法处理部分,因为没有提供多部分配置

我有一个工作的 spring-boot mvc 应用程序,我正在尝试集成文件上传选项。根据手册,我配置了以下模板:

/src/main/resource/templates/fileUpload.html

当我登录然后调用 http:/127.0.0.5:8080/upload 表单显示但是当我单击提交按钮时我得到了。错误信息

HTTP 状态 403 - 在请求参数“_csrf”或标头“X-CSRF-TOKEN”上发现无效的 CSRF 令牌“null”。

我去禁用 csrf 以查看如果禁用跨站点请求伪造(“.csrf().disable()”),表单是否可以正常工作。IE

当我在 csrf 被禁用期间尝试上传另一个文件时,我遇到了另一个错误,即:

HTTP 状态 500 - 请求处理失败;嵌套异常是 org.springframework.web.multipart.MultipartException:无法解析多部分 servlet 请求;嵌套异常是 java.lang.IllegalStateException: Unable to process parts 因为没有提供多部分配置

它说“没有提供多部分配置”,但我确实有配置 multipartConfigElement 的配置文件,即

我的 Application 类上方还有 @ComponentScan 注释和 @EnableAutoConfiguration ,即:

当应用程序启动时,我列出了由 spring 管理的所有 bean,并且我确实看到 bean“multipartResolver”正在启动。

与 fileUpload.html 关联的控制器:

当我在 get 方法处设置断点时,我看到该方法被命中并返回 fileUpload.html 视图。但是 post 方法根本没有被击中。

我不知道这是否相关,但我已在 Project-Properties-Deployment 程序集 - /src/main/resources 中设置为“/”,这是我在部署程序集配置中的唯一条目。

我之前读过,旧的 spring-boot RC 版本中存在文件上传错误。我目前正在使用 spring-boot 1.0.2.RELEASE。我的pom文件

这里添加的是评论中要求的完整 html 代码:

显示问题的工作 maven 项目的附加 2 链接

为了重现登录:

用户名:admin2 密码:#passwordD

然后去

上面描述的错误信息见。

加法3

当我删除我之前在应用程序类中的入口点邮件之前声明的 bean 时,我的特定问题得到了修复,即

我自己还没有回答这个问题,因为我还不明白为什么这种和平的代码会破坏上传功能。

0 投票
2 回答
25333 浏览

servlets - @WebServlet 注释不适用于 Tomcat 8

我想@WebServlet在 Tomcat 8 上运行的 Java EE webapp 中使用注释。

我已经读到我需要在我的 Servlet 版本 3.1 中声明,web.xml并且我的 Servlet 需要扩展HttpServlet. 我做了所有这些,但仍然@WebServlet不起作用。我得到一个 HTTP 404。

metadata-complete="false"我也尝试了我的配置web.xml,但仍然没有成功。

这是我的 web.xml 和 Servlet。

完整的示例代码可以在 GitHub 上找到

web.xml

TestServlet.java

0 投票
1 回答
1045 浏览

tomcat - 如何配置嵌入式 tomcat 监听 80 和 8443 端口?

我正在使用带有 Spring 的嵌入式 Tomcat,并以编程方式将其配置为侦听端口 8443 以获取 https 并且它可以工作。下面是我的 Apllication.java 文件中的代码片段。如何将其配置为也侦听端口 80 的 http 请求?

0 投票
4 回答
6226 浏览

java - 如何使用 Embedded Tomcat 8 和 Spring boot 将子域转换为路径

如何将子域重写为路径?

例子:

  • foo.bar .example.com --> example.com /foo/bar

或者更好的是(反向文件夹):

  • foo.bar .example.com --> example.com /bar/foo

请求foo.bar .example.com 应该在 /src/main/resources/static/ bar/foo中发送一个文件 /index.html 中发送一个文件。

对于 Apache2,它由mod_rewrite完成。我找到了有关使用Tomcat 8重写的文档,但问题是使用 spring boot 将这些文件放在哪里?


更新

我尝试使用UrlRewriteFilter,但似乎无法使用正则表达式替换在域路径中定义规则。

这是我的配置:

Maven依赖:

Spring Java Config 注册 Servlet 过滤器:

/src/main/webapp/WEB-INF 中的urlrewrite.xml

使用这个硬编码的域它可以工作,但它应该适用于这样的每个子域。

0 投票
2 回答
6393 浏览

spring-boot - 带有 Hazelcast 和 Tomcat 的 Spring Boot

您如何使用 Hazelcast 作为带有 Spring Boot 和 Spring Security 的嵌入式 Tomcat 的 http 会话存储?我看到有一个 EmbeddedServletContainerCustomizer 和 SpringAwareWebFilter 但我不明白如何使用它。

0 投票
1 回答
9586 浏览

spring-mvc - Spring MVC(引导)不发送某些文件的 MIME 类型(WOFF 等)

我正在编写一个基于 Spring Boot 的应用程序,并注意到 chrome 中有一些警告。它抱怨例如网络字体(扩展名 woff)作为纯文本而不是正确的 mime 类型发送。

我在没有特殊配置的情况下对静态文件使用常规机制。我发现的源代码看起来不可能为“stock”ResourceHandler 添加更多的 mimetypes。Resourcehandler 将 mime 类型识别分派到 servlet 容器,这是 spring-boot 1.2 的默认 tomcat。

我错过了什么吗?有人知道一种简单的方法来增强资源映射以提供更多具有正确 mime 类型的文件类型吗?

现在,我正在考虑编写一个过滤器,该过滤器会针对静态内容触发并在事后修补缺少的 mimetypes。也许我应该在 springsource 创建一个功能请求...... ;-)

0 投票
3 回答
11474 浏览

spring - Spring Boot 不支持 @WebServlet

我创建了一个 Servlet(从 HttpServlet 扩展)并按照 3.0 规范进行了注释

@Configuration在 Spring Boot 中的课程扫描了这个 servlet 的包。但是,当我的 Spring Boot 应用程序启动时,它不会记录它已经在嵌入式 Tomcat 8.0.15 容器中部署了这个 servlet。

所以,我也添加@Component到我的 servlet 中。现在,Spring Boot 注册 servlet(向我证明扫描包已正确设置),但随后它使用基于类名的 URL 模式注册它,使用驼峰式大小写。所以,这样更好 - 例如,我注册了一个 servlet,但 URL 映射错误!

如何让 Spring Boot 自动加载所有带@WebServlet注释的 servlet 并尊重它们的 url 映射?

0 投票
2 回答
8343 浏览

spring-boot - 如何使用嵌入式 Tomcat 将 JNDI 数据库连接与 Spring Boot 和 Spring Data 结合使用?

当我尝试使用嵌入式 Tomcat 服务器将 JNDI 数据源与 Spring Boot 和 Spring Data JPA 一起使用时,在使用 SpringApplication.run 运行应用程序时收到以下错误消息:

我使用How to create JNDI context in Spring Boot with Embedded Tomcat Container解决方案中描述的配置

唯一的区别是对 org.springframework.boot:spring-boot-starter-data-jpa 的附加 Maven 依赖

这是一个示例项目:https ://github.com/derkoe/spring-boot-sample-tomcat-jndi (这是解决方案中示例的修改版本)。只需检查、构建并运行 SampleTomcatJndiApplication。

用于查找数据库连接的 JNDI 上下文似乎还不是来自 webapp 的上下文。这似乎是 Spring 上下文和 Tomcat 服务器初始化中的排序问题。

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