在 JBoss 上使用 Spring MVC Java Config 出现 404 错误

2023-12-15

我使用 Java Config 编写了一个小型 Spring MVC 应用程序。它在 Tomcat 上工作得很好,但在 JBoss EAP 6.2 上却不行。它已成功部署在 JBoss 上,但当我请求 Spring MVC 定义的任何页面和浏览器中的 404 错误时,我收到此警告。

WARN [org.springframework.web.servlet.PageNotFound] (http-/127.0.0.1:8080-1) No mapping found for HTTP request with URI [/example-web/pages/login.jsp] in DispatcherServlet with name 'dispatcher'

在这里你可以看到我的代码:

public class WebApplicationInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

@Override
protected Class<?>[] getRootConfigClasses() {
    return new Class[] { RootConfiguration.class};
}

@Override
protected Class<?>[] getServletConfigClasses() {
    return new Class[] { WebMvcConfig.class };
}

@Override
protected String[] getServletMappings() {
    return new String[] { "/*" };
}

@Override
protected Filter[] getServletFilters() {
    return new Filter[] { new HiddenHttpMethodFilter() };
}
}

这是我的 Spring MVC 配置:

@EnableWebMvc
@ComponentScan("com.spring.example.w.controller")
@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("login").setViewName("login");
        registry.setOrder(Ordered.HIGHEST_PRECEDENCE);
    }

    @Bean
    public InternalResourceViewResolver getInternalResourceViewResolver(){
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/pages/");
        resolver.setSuffix(".jsp");
        return resolver;
    }
}

和根配置:

@Configuration
@ComponentScan
public class RootConfiguration {
}

在部署过程中,我可以在日志中看到请求确​​实得到了映射:

INFO  [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping] (ServerService Thread Pool -- 71) Mapped "{[/start],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public org.springframework.web.servlet.ModelAndView com.spring.example.w.controller.StartController.handleStart() throws javax.servlet.ServletException,java.io.IOException
INFO  [org.springframework.web.servlet.handler.SimpleUrlHandlerMapping] (ServerService Thread Pool -- 71) Mapped URL path [/login] onto handler of type [class org.springframework.web.servlet.mvc.ParameterizableViewController]
INFO  [org.springframework.web.context.ContextLoader] (ServerService Thread Pool -- 71) Root WebApplicationContext: initialization completed in 2530 ms
INFO  [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/example-web]] (ServerService Thread Pool -- 71) Initializing Spring FrameworkServlet 'dispatcher'
INFO  [org.springframework.web.servlet.DispatcherServlet] (ServerService Thread Pool -- 71) FrameworkServlet 'dispatcher': initialization started

非常感谢任何关于为什么我收到 404 错误和此警告的帮助。我要再次强调它正在 Tomcat 上运行。提前致谢。


在阅读 SivaLabs 的教程时,在 JBoss 上运行与 tomcat 配合良好的应用程序时出现了这样的问题。问题是通过将 DispatcherServlet 映射更改为 "/app/*" 来解决的。您还可以尝试实现 WebApplicationInitializer 而不是使用抽象类。这是示例:

 @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
        WebApplicationContext context = getContext();
        servletContext.addListener(new ContextLoaderListener(context));
        ServletRegistration.Dynamic dispatcher = servletContext.addServlet("DispatcherServlet", new DispatcherServlet(context));
        dispatcher.setLoadOnStartup(1);
        dispatcher.addMapping("/"); // i have a more or less big website, and can't see advantages by using "/*" mapping, this can be also a problem. 
    }

    private AnnotationConfigWebApplicationContext getContext() {
        AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
        context.setConfigLocations("ua.company.config.WebConfig", "ua.company.config.PersistenceConfig", "ua.company.config.SecurityConfig");
        return context;
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 JBoss 上使用 Spring MVC Java Config 出现 404 错误 的相关文章

随机推荐

  • 丢弃来自套接字的输入

    From Socket文档 关机输入 public void shutdownInput throws IOException 将此套接字的输入流放置在 流末尾 发送到套接字输入流端的任何数据都会被确认 然后默默地丢弃 如果在套接字上调用
  • 如何在真实设备中查看我的应用程序的 sqlite 数据库的内容?

    我想在我部署它的设备中查看在我的应用程序中创建的数据库的内容 我可以在 shell 中使用 sqlite 命令并在模拟器中查看 但不能在真实设备中查看 有谁知道如何在真实设备中执行此操作吗 如果应用程序被标记为可调试 则不需要 root 您
  • Bootstrap 翻转卡与 css3 转换

    我想使用 CSS3 变换创建引导翻转卡 我确实是从这个开始的工作和基本示例 但是我想修改它以具有固定高度的卡和一些小的增强功能 特别是 当用户单击我在右上角创建的图标时 我需要翻转卡片 我已经修改了代码 如你所见here 问题是卡片在正确翻
  • Ruby 的 public_send 方法有什么等价的吗?

    在 Ruby 中 要构造方法的名称并将其发送到对象 可以执行以下操作 class Foo def foo FOO end end Foo new public send foo gt FOO Foo new public send foo
  • cpp (C++) 中的 sha1 函数

    首先我要说的是我对 C 一无所知 我用 google 搜索了一下 没有任何东西可以让我理解如何在 C 中使用 SHA1 不过找到了这个目标 C SHA1但它是关于目标 c 我不确定它是否相同 我需要执行以下操作 我有很多文件 我通过执行 m
  • 什么是 Scala 上下文和视图边界?

    简单来说 什么是上下文和视图边界 它们之间有什么区别 一些易于理解的示例也很棒 我认为这个问题已经被问过 但是 如果是这样 这个问题在 相关 栏中并不明显 所以 这里是 什么是视图绑定 A 视图绑定是 Scala 中引入的一种机制 可以使用
  • 我可以提取sql中重复的提取记录吗?

    在我的表中 我有以下列 id name gender 我想提取所有重复的名称 但我不想扫描所有数据库来一一统计每条记录 我只想知道谁有相同的名字 例子 0 mary F 1 tom M 2 peter M 3 mary F 4 chris
  • 使用 PredicateBuilder、LINQPad 和运算符 ANY 生成 SQL

    I 之前问过关于 Linq To Entities 中的链接条件的问题 现在我用LinqKit一切正常 我想查看生成的 SQL 并阅读后这个答案 I use LinqPad 这是我的声明 var predProduct PredicateB
  • 在继续之前等待另一个可观察的结果

    我不知道是否应该为此发布任何代码 但如果需要的话我会的 我有一个 Angular2 指令 MyDirective和一项服务MyService 该服务在其构造函数中进行 http 调用以获取某些内容并存储在其中this list 指令注入服务
  • Oracle:为什么不使用并行执行?

    看下面的查询 如果我评论子查询 它会使用并行执行 否则不会 查询完成后 SELECT parallel c 20 1 SELECT 2 FROM DUAL FROM DUAL c 你可能已经找到答案了在文档中 仅当满足以下条件时 SELEC
  • 当提供的字符串不为空时 string.IsNullOrEmpty 返回 true

    我有一个单元测试 它调用传入字符串的对象的方法 被调用的方法要做的第一件事就是检查字符串是否为 null 或空 但是 无论 filePath 的值是什么 对 string IsNullOrEmpty 的调用都是 true 见下图 我在这里错
  • 如何在 Scala 中编写返回 Option[List] 的函数?

    假设我有两个函数来获取订单和订单商品 def getOrders Option List Int def getOrderItems orderId Int Option List Int 请注意 两个函数都返回Option List 因为
  • SendInput VB 基本示例

    我希望有人可以提供帮助 我试图找到模拟键盘命令的 SendInput 代码的示例 我希望找到记事本窗口并输入测试消息 我最初在我正在从事的一个项目中使用 SendKeys SendKeys 功能使我能够将键盘命令转发到我们在工作场所使用的定
  • Google App Engine NDB:如何存储文档结构?

    来自 App Engine NDB文档 NDB API 在无模式对象中提供持久存储 数据存储 它支持自动缓存 复杂的查询和 原子交易 NDB 非常适合存储结构化数据 记录 我想使用 NDB 创建如下结构 其中每个实例如下所示 city SF
  • lex 有问题

    我的lex如下 LNUM 0 9 DNUM 0 9 0 9 0 9 0 9 LNUM printf t ECHO printf r n DNUM printf t ECHO printf r n 但事实证明它只能匹配像这样的数字4 12 2
  • 安装 mpi4py

    我正在尝试在我的 Linux 机器上安装 mpi4py 我最近安装了 anaconda 4 1 1 根据他们的文档 该软件包应该附带 mpi4py 2 0 0 当我尝试用 验证 时conda list 我在列表中找不到该包 我努力了 pip
  • 如何通过Socket发送字符串数组对象?

    我有字符串数组对象 可以说 String names new String 7 我还通过在客户端系统上使用 ObjectOutputStream 将其存储到文件中来使该对象持久化 我正在使用 ObjectInputStream 读取存储的对
  • 使用 JavaScript 进行表单验证

    我正在尝试使用 JavaScript 验证表单 但我有点坚持在字段旁边显示一条消息说 此字段是必需的 我该怎么做呢 抱歉 我对 JavaScript 很陌生 这是我的js代码 var allFieldsRequired true funct
  • iOS 9 / Xcode 7 上的 SpriteKit 场景屏幕偏移

    我将一个 SpriteKit 项目从 Xcode64 移动到 Xcode7 在 iOS9 模拟器中运行它 屏幕内容发生了变化 在iOS8模拟器中运行时不会移位 iOS9模拟器截图 在Xcode7中缩放SpriteKit场景会以不同的中心缩放
  • 在 JBoss 上使用 Spring MVC Java Config 出现 404 错误

    我使用 Java Config 编写了一个小型 Spring MVC 应用程序 它在 Tomcat 上工作得很好 但在 JBoss EAP 6 2 上却不行 它已成功部署在 JBoss 上 但当我请求 Spring MVC 定义的任何页面和