当前位置: 首页 > 知识库问答 >
问题:

无法将Spring应用部署到Websphere

方飞翼
2023-03-14

在开发阶段,我一直在开发tomcat的应用程序。随着我们的前进,我的客户希望部署到webphere。我正试图在webphere 8.5上这样做,但出于某种原因,我似乎遇到了问题。Tomcat很容易,我只是在战争中倒下,一切都像它应该的那样工作。Webphere是一个不同的故事。当我尝试点击我的应用程序时,我总是会遇到以下错误:

Error 404: SRVE0190E: File not found: {0}

我一直在做一些研究,除了下面的一行,我没有注意到日志中有任何奇怪的地方。管理控制台说应用程序正在运行,没有问题。

SRVE0292I: Servlet Message - [app#app.war]:.No Spring WebApplicationInitializer types detected on classpath

我的应用程序是使用Java配置文件而不是传统的XML配置的,我猜这是问题的一部分吧?

我发现一篇博文说有一些服务器设置需要应用。我尝试了那些没有成功的:

com.ibm.ws.webcontainer.mapFiltersToAsterisk=true
com.ibm.ws.webcontainer.removetrailingservletpathslash=true
com.ibm.ws.webcontainer.invokeFiltersCompatibility=true

我不知所措,有人有想法吗?

由于后续工作,我将发布我的网站。xml和WebappInitializer:

@Order(2)
public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

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

    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class<?>[] {ApplicationConfig.class, DataSourceConfig.class, JpaConfig.class, SecurityConfig.class, MailConfig.class};
    }

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

    @Override
    protected Filter[] getServletFilters() {
        CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
        characterEncodingFilter.setEncoding("UTF-8");
        characterEncodingFilter.setForceEncoding(true);
        return new Filter[] {characterEncodingFilter};
    }

    @Override
    protected void customizeRegistration(ServletRegistration.Dynamic registration) {
        registration.setInitParameter("defaultHtmlEscape", "true");
        registration.setInitParameter("spring.profiles.active", "default");
    }
}

网状物xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
        version="3.0" metadata-complete="false">
        <!-- Map all errors to Spring MVC handler method. See CustomErrorController.generalError() -->
        <error-page>
            <location>/generalError</location>
        </error-page>
        <session-config>
          <session-timeout>15</session-timeout>
       </session-config>
       <display-name>eua</display-name>
    </web-app>

共有3个答案

纪晨
2023-03-14

我也有类似的问题。Websphere对可以扫描的类的数量有一些默认限制。这个SpringBoot主类可能不在这个范围内。在我的例子中,当我设置这个JVM属性-Dclassinfocachesize=10000(应用程序服务器)时,问题得到了解决

子车桐
2023-03-14

在WebAppInitializer类上使用@Configuration注释

@Configuration 
public class WebAppInitializer implements WebApplicationInitializer {

    @Override
    public void onStartup(ServletContext container) {
        // Create the 'root' Spring application context
        AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext();
        rootContext.register(HibernateConfiguration.class);

        // Manage the lifecycle of the root application context
        container.addListener(new ContextLoaderListener(rootContext));

        // Create the dispatcher servlet's Spring application context
        AnnotationConfigWebApplicationContext dispatcherServlet = new AnnotationConfigWebApplicationContext();
        dispatcherServlet.register(SpringWebConfig.class);

        // Register and map the dispatcher servlet
        ServletRegistration.Dynamic dispatcher = container.addServlet("dispatcher", new DispatcherServlet(dispatcherServlet));
        dispatcher.setLoadOnStartup(1);
        dispatcher.addMapping("/");

    }

 }
韩照
2023-03-14

我对我的解决方案不是很满意,但它暂时有效。Webphere对无web.xml初始化的支持有点不合标准。甚至他们技术人员的回复也没有帮助。最后,我不得不将Spring初始化的一部分移至web.xml.我仍然能够通过配置文件配置我的大部分JPA、安全和Web功能,但我必须给Spring一点启动。以下是我为任何感兴趣的人修改的web.xml。感谢大家的帮助和指导。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xmlns="http://java.sun.com/xml/ns/javaee"
            xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
            xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
            http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
         id="WebApp_ID" version="3.0">
    <!-- Map all errors to Spring MVC handler method. See CustomErrorController.generalError() -->
    <error-page>
        <location>/generalError</location>
    </error-page>
    <session-config>
      <session-timeout>15</session-timeout>
   </session-config>
   <display-name>app</display-name>
   <context-param>
      <param-name>contextClass</param-name>
      <param-value>
          org.springframework.web.context.support.AnnotationConfigWebApplicationContext
      </param-value>
   </context-param>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>org.proj.config.ApplicationConfig 
                    org.proj.config.DefaultDataSourceConfig
                    org.proj.config.JpaConfig
                    org.proj.config.SecurityConfig
                    org.proj.config.MailConfig
                    org.proj.config.WebMvcConfig
       </param-value>
    </context-param>

    <!-- Bootstrap the root application context as usual using ContextLoaderListener -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

   <servlet>
        <servlet-name>spring</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>        
        <init-param>
          <param-name>contextClass</param-name>
          <param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value>
         </init-param>
          <!-- Again, config locations must consist of one or more comma- or space-delimited
               and fully-qualified @Configuration classes -->
          <init-param>
              <param-name>contextConfigLocation</param-name>
              <param-value>org.proj.config.ApplicationConfig 
                           org.proj.config.DefaultDataSourceConfig
                           org.proj.config.JpaConfig
                           org.proj.config.SecurityConfig
                           org.proj.config.MailConfig
                           org.proj.config.WebMvcConfig  
               </param-value>
          </init-param>
          <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>spring</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
    <filter>
        <filter-name>springSecurityFilterChain</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>

    <filter-mapping>
      <filter-name>springSecurityFilterChain</filter-name>
      <url-pattern>/*</url-pattern>
      <dispatcher>ERROR</dispatcher>
      <dispatcher>REQUEST</dispatcher>
    </filter-mapping>
</web-app>
 类似资料:
  • 我无法让我的Spring Boot站点在Azure Web实例上响应。我遵循了Java应用程序说明和上传说明。IIS服务器似乎正在接收请求,但战争中的servlet没有响应。根据留档,有几个问题。特别是,web.config应该部署到www root,并指定java路径和转发端口。我相信我已经涵盖了这些基础——我的web.config贴在下面。 我确实尝试过从市场上部署tomcat服务器,效果很好

  • 我试图将Spring Boot应用程序部署到Heroku,但我无法做到这一点。我的应用程序会自动检测为"heroku-maven-plugin",但我想将其部署为Java应用程序。 我怎样才能做到这一点?

  • 嘿,我已经尝试了几天了,我已经遍历了文档,我遵循了教程,当我试图将react应用程序部署到github页面时,我无法通过npm运行部署。我将npm称为运行构建,我将正确的url放置到package.json作为“主页”,我再次调用它并获得“部署”和“预部署”,我在节点模块中肯定有gh-pages,我的意思是我得到了所有我遵循的每一个步骤,每个教程都可以告诉我。我遇到了一个问题,内容如下: 错误:无

  • 我从昨天开始尝试在AWS Beanstalk上的Tomcat中部署Spring启动,但我总是出现此异常: 在我的本地开发环境中,我没有这个错误。在我的本地开发环境中,我在Tomcat 7上开发了“1.0.2.RELEASE”版本。 我创建了一场战争,我在AWS Beanstalk中的Tomcat 7实例上部署了它,但下面的错误总是出现。如何修复此错误?

  • 我正在尝试向EB部署一个测试应用程序。我遇到了一个问题。我遵循了本教程:https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/dotnet-linux-core-tutorial.html 当我上传测试应用程序时,它无法启动/var/log/eb引擎。日志说 2022/02/07 21:59:18.585543[ERROR]执行命令[app部

  • 我正在尝试使用jpa、hibernate、jersey为webphere构建一个Spring boot项目。 一旦我知道websphere只支持JPA 2.0,我就找到了这篇文章(Halo,I am article),并尝试遵循它。然而,这似乎对我不起作用。引发异常 原因:java。lang.ClassCastException:com。ibm。websphere。坚持不懈PersistenceP