【问题标题】:Tomcat work directory emptyTomcat 工作目录为空
【发布时间】:2013-10-10 08:09:13
【问题描述】:

我的 Spring 项目已成功部署在另一台 Linux 服务器上。但是当我尝试在这个 Linux 服务器上部署它时,它不会部署。当我转到主页时,我收到错误“HTTP Status 404 - The requested resource is not available”。

我比较了两台服务器的 Tomcat 目录,只看到“工作”目录中的差异。在这台服务器上(有问题的那个),在Tomcat的“work\Catalina\localhost\MyProject”目录下,我看到它是空的。原来这些文件被放在“work\Catalina\localhost\_”下。是什么导致 Tomcat 这样做?

在我的 tomcat 日志文件中,我得到了这个:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'SampleService': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.wdc.hydra.dao.DatatypeDAO com.wdc.hydra.service.DatatypeServiceImpl.datatypeDAO; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'SampleDAO': Injection of persistence dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'Sample' defined in class path resource [Sample-dao-context.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: javax.persistence.spi.PersistenceUnitInfo.getValidationMode()Ljavax/persistence/ValidationMode;

有人知道为什么会这样吗?谢谢。

【问题讨论】:

  • 所以这个问题是关于部署你的 Spring 应用程序的能力 - 我猜是版本不匹配
  • 标题具有误导性。这不是描述您的问题,而是基于假设。我对您的问题的猜测是两个不同 linux 服务器之间的 tomcat /lib 文件夹中的持久性框架版本不同。
  • 我有一个用来设置 Tomcat 的脚本。 Tomcat 可以在两台服务器上运行,但我的项目只能部署在一台服务器上。我比较了两台服务器的 Tomcat 目录结构,除了我上面描述的“工作”目录之外,它们完全相同(减去一些细微差别)。
  • 正如 Matthias 所说,问题可能是由于您的持久性框架的不同版本造成的。由此产生的 NoSuchMethodError 阻止了 Tomcat 完全部署应用程序 - 因此将工作目录留空。您说两次安装之间的目录结构相同。你能确认持久化jar文件的版本是一样的吗?您可能需要展开 jar 并查看 META-INF/MANIFEST.MF 文件。特别是 Specification-Version 属性。

标签: java linux spring tomcat


【解决方案1】:

Spring Container 是如何定义的?无论是通过 XmlWebApplicationContext / FileSystemXmlApplicationContext / ClasspathXmlApplicationContext 还是通过 FileSystemXmlApplicationContext ,那么您在两个 linux 服务器中的目录结构应该是相同的。像其他聪明人一样。

【讨论】:

  • 它来自 XmlWebApplicationContext。
  • 嗯..我觉得是因为jar文件的类路径。如果您正在使用像 hibernate 这样的 JPA 提供程序,您会看到类似 Hibernate-jpa 的内容,并确保类路径中只有一个。它在 JPA 级别上失败了。
猜你喜欢
  • 2014-05-21
  • 1970-01-01
  • 1970-01-01
  • 2011-04-17
  • 2012-06-30
  • 2015-02-13
  • 2015-12-11
  • 2015-08-14
  • 1970-01-01
相关资源
最近更新 更多