- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将带有 spring boot 和 struts 2(struts.xml 文件)的 Web 应用程序从 Jboss 7.1.1 迁移到嵌入式 tomcat。
现在,我的配置是这样的:
应用程序.java
@SpringBootApplication()
@ServletComponentScan()
public class Application extends JbossDefaultPropertiesInitializer {
public static void main(String[] args) {
configureApplication(new SpringApplicationBuilder()).run(args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
setRegisterErrorPageFilter(false);
return configureApplication(builder);
}
private static SpringApplicationBuilder configureApplication(SpringApplicationBuilder builder) {
builder.initializers(new DefaultPropertiesInitializer());
return builder.sources(Application.class);
}
}
pom.xml
<resources>
<resource>
<directory>src/main/webapp</directory>
<targetPath>/static</targetPath>
<excludes>
<exclude>**/*.jsp</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/webapp</directory>
<targetPath>/WEB-INF/jsp</targetPath>
<includes>
<include>**/*.jsp</include>
</includes>
</resource>
</resources>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.5.6.RELEASE</version>
<configuration>
<mainClass>com.myapplication.Application</mainClass>
<executable>true</executable>
<layout>WAR</layout>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
struts.devMode=true
每个过滤器、servlet 和监听器都从 web.xml 迁移到@WebFilter、@WebListener 和@WebServlets。
当我启动 tomcat 时,一切似乎都工作正常,并且我能够获得一些静态资源,如 html、css 和 js。
当我调用一些像 http://localhost:8080/myapplication/login.go 这样的 struts 页面时,一切都很好,调用了过滤器和 servlet,调用了我的操作,但是当操作返回“成功”以调用“/myapplication/jsp/login.jsp”时,它没有呈现。未调用 jsp 文件或存在一些错误,我在控制台中什么也没有得到。
我的操作调用jsp页面之前的日志:
2017-11-28 13:03:19.881 INFO 7376 --- [nio-8080-exec-3] c.o.x.c.p.XmlConfigurationProvider : Parsing configuration file [struts-default.xml]
2017-11-28 13:03:19.933 WARN 7376 --- [nio-8080-exec-3] com.opensymphony.xwork2.util.DomHelper : Local DTD is missing for publicID: -//Apache Software Foundation//DTD Struts Configuration 2.5//EN - defined mappings: {-//Apache Struts//XWork 1.1.1//EN=xwork-1.1.1.dtd, -//Apache Software Foundation//DTD Struts Configuration 2.0//EN=struts-2.0.dtd, -//Apache Struts//XWork 1.0//EN=xwork-1.0.dtd, -//Apache Software Foundation//DTD Struts Configuration 2.1//EN=struts-2.1.dtd, -//Apache Struts//XWork 1.1//EN=xwork-1.1.dtd, -//Apache Struts//XWork 2.1.3//EN=xwork-2.1.3.dtd, -//Apache Software Foundation//DTD Struts Configuration 2.3//EN=struts-2.3.dtd, -//Apache Struts//XWork 2.0//EN=xwork-2.0.dtd, -//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN=struts-2.1.7.dtd, -//Apache Struts//XWork 2.1//EN=xwork-2.1.dtd, -//Apache Struts//XWork 2.3//EN=xwork-2.3.dtd}
2017-11-28 13:03:20.220 INFO 7376 --- [nio-8080-exec-3] c.o.x.c.p.XmlConfigurationProvider : Parsing configuration file [struts-plugin.xml]
2017-11-28 13:03:20.301 INFO 7376 --- [nio-8080-exec-3] c.o.x.c.p.XmlConfigurationProvider : Parsing configuration file [struts.xml]
2017-11-28 13:03:20.304 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (spring) for (com.opensymphony.xwork2.ObjectFactory)
2017-11-28 13:03:20.304 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.factory.ActionFactory)
2017-11-28 13:03:20.304 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.factory.ResultFactory)
2017-11-28 13:03:20.304 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.factory.ConverterFactory)
2017-11-28 13:03:20.304 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.factory.InterceptorFactory)
2017-11-28 13:03:20.304 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.factory.ValidatorFactory)
2017-11-28 13:03:20.304 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.factory.UnknownHandlerFactory)
2017-11-28 13:03:20.304 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.FileManagerFactory)
2017-11-28 13:03:20.305 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.conversion.impl.XWorkConverter)
2017-11-28 13:03:20.305 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.conversion.impl.CollectionConverter)
2017-11-28 13:03:20.305 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.conversion.impl.ArrayConverter)
2017-11-28 13:03:20.305 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.conversion.impl.DateConverter)
2017-11-28 13:03:20.305 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.conversion.impl.NumberConverter)
2017-11-28 13:03:20.305 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.conversion.impl.StringConverter)
2017-11-28 13:03:20.305 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.conversion.ConversionPropertiesProcessor)
2017-11-28 13:03:20.305 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.conversion.ConversionFileProcessor)
2017-11-28 13:03:20.305 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.conversion.ConversionAnnotationProcessor)
2017-11-28 13:03:20.305 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.conversion.TypeConverterCreator)
2017-11-28 13:03:20.306 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.conversion.TypeConverterHolder)
2017-11-28 13:03:20.306 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.TextProvider)
2017-11-28 13:03:20.306 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.LocaleProvider)
2017-11-28 13:03:20.306 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.ActionProxyFactory)
2017-11-28 13:03:20.306 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.conversion.ObjectTypeDeterminer)
2017-11-28 13:03:20.306 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (org.apache.struts2.dispatcher.mapper.ActionMapper)
2017-11-28 13:03:20.306 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (jakarta) for (org.apache.struts2.dispatcher.multipart.MultiPartRequest)
2017-11-28 13:03:20.306 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (org.apache.struts2.views.freemarker.FreemarkerManager)
2017-11-28 13:03:20.306 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (org.apache.struts2.views.velocity.VelocityManager)
2017-11-28 13:03:20.306 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (org.apache.struts2.components.UrlRenderer)
2017-11-28 13:03:20.306 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.validator.ActionValidatorManager)
2017-11-28 13:03:20.307 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.util.ValueStackFactory)
2017-11-28 13:03:20.307 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.util.reflection.ReflectionProvider)
2017-11-28 13:03:20.307 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.util.reflection.ReflectionContextFactory)
2017-11-28 13:03:20.307 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.util.PatternMatcher)
2017-11-28 13:03:20.307 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (org.apache.struts2.util.ContentTypeMatcher)
2017-11-28 13:03:20.307 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (org.apache.struts2.dispatcher.StaticContentLoader)
2017-11-28 13:03:20.307 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.UnknownHandlerManager)
2017-11-28 13:03:20.307 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (org.apache.struts2.views.util.UrlHelper)
2017-11-28 13:03:20.308 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.util.TextParser)
2017-11-28 13:03:20.308 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (org.apache.struts2.dispatcher.DispatcherErrorHandler)
2017-11-28 13:03:20.308 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.security.ExcludedPatternsChecker)
2017-11-28 13:03:20.308 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.AbstractBeanSelectionProvider : Choosing bean (struts) for (com.opensymphony.xwork2.security.AcceptedPatternsChecker)
2017-11-28 13:03:20.310 INFO 7376 --- [nio-8080-exec-3] o.a.s.c.DefaultBeanSelectionProvider : Loading global messages from [messageResources]
2017-11-28 13:03:20.699 INFO 7376 --- [nio-8080-exec-3] c.o.xwork2.spring.SpringObjectFactory : Setting autowire strategy to name
2017-11-28 13:03:21.764 ERROR 7376 --- [nio-8080-exec-3] c.o.x.interceptor.ParametersInterceptor : Developer Notification (set struts.devMode to false to disable this message):
Unexpected Exception caught setting 'cp' on 'class com.myapplication.account.actions.LoginNavigationAction: Error setting expression 'cp' with value ['false', ]
2017-11-28 13:03:21.769 ERROR 7376 --- [nio-8080-exec-3] c.o.x.interceptor.ParametersInterceptor : Developer Notification (set struts.devMode to false to disable this message):
Unexpected Exception caught setting 'forwardURL' on 'class com.myapplication.account.actions.LoginNavigationAction: Error setting expression 'forwardURL' with value ['/myapplication/html/login.html', ]
2017-11-28 13:03:21.844 INFO 7376 --- [nio-8080-exec-3] c.m.account.actions.LoginPageAction : ========================= Result from LoginPageAction: success
更新
当我尝试 java -jar myapplication.war 时,我可以访问我的静态页面,但我在访问 struts 页面时遇到另一个错误:
2017-11-29 08:55:41.536 WARN 7968 --- [nio-8080-exec-8] c.o.xwork2.util.fs.JarEntryRevision : Could not create JarEntryRevision for [jar:file:/C:/workspaces/workspace/dev/myapplication/target/myapplication-war-0.0.0.war]!
java.lang.NullPointerException: null
at com.opensymphony.xwork2.util.fs.JarEntryRevision.build(JarEntryRevision.java:52)
at com.opensymphony.xwork2.util.fs.DefaultFileManager.monitorFile(DefaultFileManager.java:97)
at com.opensymphony.xwork2.util.fs.DefaultFileManager.loadFile(DefaultFileManager.java:74)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadConfigurationFiles(XmlConfigurationProvider.java:1015)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadDocuments(XmlConfigurationProvider.java:167)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.init(XmlConfigurationProvider.java:134)
at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:239)
....
2017-11-29 08:55:41.636 WARN 7968 --- [nio-8080-exec-8] c.o.xwork2.util.fs.JarEntryRevision : Could not create JarEntryRevision for [jar:war:file:/C:/workspaces/workspace/dev/myapplication/target/myapplication-war-0.0.0.war*/WEB-INF/lib/struts2-core-2.3.34.jar]!
java.io.FileNotFoundException: war:file:\C:\workspaces\workspace\dev\myapplication\target\myapplication-war-0.0.0.war*\WEB-INF\lib\struts2-core-2.3.34.jar (The filename, directory name, or volume label syntax is incorrect)
at java.util.zip.ZipFile.open(Native Method)
at java.util.zip.ZipFile.<init>(ZipFile.java:219)
at java.util.zip.ZipFile.<init>(ZipFile.java:149)
at java.util.jar.JarFile.<init>(JarFile.java:166)
at java.util.jar.JarFile.<init>(JarFile.java:130)
at com.opensymphony.xwork2.util.fs.JarEntryRevision.build(JarEntryRevision.java:50)
...
2017-11-29 08:55:41.690 INFO 7968 --- [nio-8080-exec-8] c.o.x.c.p.XmlConfigurationProvider : Parsing configuration file [struts-default.xml]
2017-11-29 08:55:41.802 ERROR 7968 --- [nio-8080-exec-8] o.apache.struts2.dispatcher.Dispatcher : Dispatcher initialization failed
com.opensymphony.xwork2.config.ConfigurationException: Unable to load configuration.
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:70)
at org.apache.struts2.dispatcher.Dispatcher.getContainer(Dispatcher.java:978)
at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:446)
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:490)
at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:74)
...
Caused by: com.opensymphony.xwork2.config.ConfigurationException: Unable to load bean: type: class:com.opensymphony.xwork2.ObjectFactory
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.register(XmlConfigurationProvider.java:247)
at org.apache.struts2.config.StrutsXmlConfigurationProvider.register(StrutsXmlConfigurationProvider.java:102)
at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:240)
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:67)
... 65 common frames omitted
Caused by: com.opensymphony.xwork2.config.ConfigurationException: Bean type class com.opensymphony.xwork2.ObjectFactory with the name struts has already been loaded by bean - jar:file:/C:/workspaces/workspace/dev/myapplication/target/myapplication-war-0.0.0.war!/WEB-INF/lib/struts2-core-2.3.34.jar!/struts-default.xml:65:72
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.register(XmlConfigurationProvider.java:231)
... 68 common frames omitted
拜托,有什么想法吗?
最佳答案
您是否尝试过将 jsp 文件从 src/main/webapp 文件夹简单地移动到 src/main/resources/META-INF/resources/WEB-INF ? Servlet 3.0 规范允许在 src/main/resources/META-INF/resources/中有动态页面
关于spring-boot - Spring Boot + Tomcat Embedded + Struts 2 - 不调用 JSP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47541036/
有人可以解释一下 spring-boot-parent 和 spring-boot-starter-parent 之间的区别吗,正如我在下面附加的 GIT HUB 代码链接之一中看到的,他们为 spr
我有与 jersey 框架集成的 Spring Boot 应用程序。 现在,当我尝试运行该应用程序时,它只是停留在 Spring 启动徽标上,之后没有任何 react 。 我也尝试添加 -X ,但徽标
我指的是 Spring Boot 关于 的文档自动配置 和 执行器 模块: 自动配置: Spring Boot AutoConfiguration attempts to automatically
我正在尝试将 apache log4j 集成到我的 Spring boot 应用程序中。这是我的 build.gradle 文件: build.gradle buildscript { rep
使用 Spring Boot Maven 插件的以下命令在生产中启动 Spring Boot 应用程序是否是一个好主意或实践? mvn spring-boot:run 最佳答案 不,这是个坏主意。 您
据我所知,spring boot 和 spring session 为我们提供了一站式自动配置,但是当我的应用程序使用 session redis 和应用程序缓存 redis 时,不是同一个 redi
我希望使用Spring Boot创建一个新的Web应用程序。不幸的是,我的服务器在技术堆栈方面相当有限。它安装了Java 5。 谁能告诉我spring boot是否可以在Java 1.5上运行以及什么
我有3个实体 CarWash(设置Wash) Wash(car_wash_id FK到CarWash) WashComment(wash_id FK到Wash) 有什么办法可以写这个查询 @Qu
我一直在关注this文章。 我正在尝试在Spring-boot应用程序中优雅地处理gRPC错误,的主要目标是能够在gRPC客户端中获取错误状态。 在上面的文章之后,我坚持为异常添加拦截器。如何在Spr
我有一个要使用的自定义log4j布局插件。在IntelliJ中运行或与./gradlew bootRun一起运行时,插件可以正常工作。不使用./gradlew bootJar构建启动jar。 启用-D
我想在给定范围 (5001-5100) 的随机端口上启动 Spring Cloud 应用程序(Spring Boot 1.5.14,Spring Cloud Edgware.SR4)。我知道我们可以使
任何人都可以向我展示或指出不使用 spring boot gradle 插件的 spring boot gradle 项目。 我正在寻找类似不使用 gradle 插件的 spring boot sta
我当时尝试包含上述依赖项之一,但找不到任何区别: spring boot starter web:我可以看到 Flux 和 Mono 类并制作一个响应式(Reactive)休息 Controller
我们一直在为我们的应用程序使用 Springboot 1.X。 现在准备开始一些新的应用程序,想知道我们是应该使用 SpringBoot2.0 还是坚持使用 SpringBoot 1.X? 对一种方式
我希望记录应用程序正在加载 application-profile.propeties 或 application.yml。怎么做。在哪种方法中,我可以听取它并检测它是成功加载还是失败。 最佳答案 您
当我在 pom.xml 中添加简单的 spring-boot-starter-data-jpa 依赖项时,在 pom.xml 文件中出现错误。如果我删除该依赖项,则不会再有错误。我不确定为什么会发生这
我希望记录应用程序正在加载 application-profile.propeties 或 application.yml。怎么做。在哪种方法中,我可以听取它并检测它是成功加载还是失败。 最佳答案 您
我在网上看了很多关于 spring-boot-devtools 的文章和问题,但仍然无法弄清楚为什么它对我不起作用。每次运行我的应用程序时,我都会得到以下信息: 17:54:28.057 [main]
我正在尝试将现有的 Spring 应用程序移植到 Spring Boot。我不使用 spring-boot-starter-data-solr 启动器,但是我的类路径上有 apache solrj (
(这主要是一个历史问题。Pivotal 建议所有论坛讨论都在 StackOverflow 上进行,这就是我在这里问它的原因。) Spring Boot 项目用来证明将应用程序的类和依赖项从可执行 ja
我是一名优秀的程序员,十分优秀!