【发布时间】:2022-10-23 18:34:35
【问题描述】:
我有一个带有百里香休息+肥皂的春季靴子项目。
我有一个页面:
Show the front end
+ Rest Requests
+ Soap requests.
问题源于“肥皂“当我必须创建端点.
当我将此端点添加到配置中时:
@Bean
public ServletRegistrationBean<CXFServlet> dispatcherServlet() {
return new ServletRegistrationBean<CXFServlet>(new CXFServlet(), "/soap-api/*");
}
@Bean
@Primary
public DispatcherServletPath dispatcherServletPathProvider() {
return () -> "";
}
我正在使用带有 apache cfx 的肥皂。我用于项目的 cfx 配置是here
我发现了一个稍微意外的错误。
如果我在我的配置中运行这个配置,我会遇到所有这些问题:
- 我的配置里面的配置
我收到以下类型的错误:
创建名称为“resourceHandlerMapping”的 bean 时出错 类路径资源 [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]: 通过工厂方法实例化 Bean 失败;嵌套异常是 org.springframework.beans.BeanInstantiationException:失败 实例化 [org.springframework.web.servlet.HandlerMapping]:工厂 方法“resourceHandlerMapping”抛出异常;嵌套异常是 java.lang.IllegalStateException:没有设置 ServletContext
我尝试使用@EnableWebMvc,但我遇到了一个问题:
创建名称为“resourceHandlerMapping”的 bean 时出错 类路径资源 [org/springframework/web/servlet/config/annotation/DelegatingWebMvcConfiguration.class]
此时我已经尝试过:添加百里香的路径
ClassLoaderTemplateResolver secondaryTemplateResolver = new ClassLoaderTemplateResolver();但它不起作用。我也尝试过基本映射:
UrlBasedViewResolver resolve = new UrlBasedViewResolver(); resolve.setPrefix("templates/"); resolve.setSuffix(".html");但它也不起作用。
- 在我的配置之外配置
奇怪的是,如果我将该配置放在另一个 java文件,没有问题。但是当我访问该页面时,我得到一个 错误:
错误 10788 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[...] : 无法正确分派自定义错误页面 [/error]
所以我想像spring一样映射传统方式,在另一个java配置中:
@Bean public UrlBasedViewResolver viewResolver() { UrlBasedViewResolver resolver = new UrlBasedViewResolver(); //resolver.setPrefix("/WEB-INF/view/"); //resolver.setSuffix(".jsp"); // THYMELEAFT resolver.setPrefix("templates/"); resolver.setSuffix(".html"); resolver.setViewClass(JstlView.class); return resolver; } // RESOURCES @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/resources/**") .addResourceLocations("/", "/resources/") .setCachePeriod(3600) .resourceChain(true) .addResolver(new PathResourceResolver()); } @Bean public ResourceBundleThemeSource themeSource() { ResourceBundleThemeSource themeSource = new ResourceBundleThemeSource(); themeSource.setDefaultEncoding("UTF-8"); themeSource.setBasenamePrefix("themes."); return themeSource; }它也不起作用。我目前在这一点上。问题2有什么解决办法吗?
此时我可以成功加载SOAP,但是其他页面在 浏览器显示为 404。在控制台中我得到:自定义错误 页面 [/error] 无法正确发送
据我了解,它使映射的路线一团糟 我的理解是,当我注册一个 servlet 时,“前一个或当前”会丢失,并且它没有与 ServletRegistrationBean 映射。
有没有什么办法解决这一问题?我是否必须使用 ClassLoaderTemplateResolver 或 UrlBasedViewResolver 手动映射所有路线?我试过了,但它会抛出同样的错误。 如果在进行中更改“每次都会出现不同的错误”。这就是为什么我正在寻找一种直接解决问题的方法。
笔记: 我正在使用 apache.cxf 插件
【问题讨论】:
标签: spring spring-boot