从基于Spring-Hibernate的Web应用程序创建JAR

时间:2011-12-08 18:45:14

标签: java spring web-applications jar manifest

我有一个基于Spring MVC的Web应用程序和Hibernate。以下是目录结构:

  • SRC
    • com / myproject / abstractmodels /< - 包含域对象的一些抽象java文件
    • com / myproject / dao / personsmodel /< - dao layer,使用hibernate获取数据
    • COM / myproject的/刀/ anothermodel /
    • com / myproject / domain / personsmodel /< - 用于hibernate映射的域/ BusinessObjects和HBM文件
    • COM / myproject的/域/ anothermodel /
    • com / myproject / service / personsmodelservice< - 服务层与DAO层对话
    • COM / myproject的/服务/ anothermodelservice
    • com / myproject / controller /< - Servlets,使用服务层和域对象进行Web演示(JSP文件)
  • 的WebRoot
    • WEB-INF
      • web.xml< - 设置web应用和spring框架,使用下面的xmls配置图层。
      • 配置
        • services.xml< - 设置服务层,即将服务接口与其实现粘合在一起并注入DAO bean
        • hibernate.xml< - 使用hibernate hbm文件进行映射并定义DAO bean
        • servlets.xml< - 将控制器和服务bean的bean注入其中
        • views.xml< - jsp文件

现在我需要使用Service,DAO,Domain和AbstractModels包创建一个库(jar)。基本上,我们的想法是,当给出这个jar文件和数据库时,任何人都可以使用我们的hibernate,服务和域对象创建自己的servlet /用户界面或创建Web服务。

我只是制作了包含目录的jar文件:

 - com/myproject/abstractmodels/
 - com/myproject/dao/personsmodel/
 - com/myproject/dao/anothermodel/
 - com/myproject/domain/personsmodel/
 - com/myproject/domain/anothermodel/
 - com/myproject/service/personsmodelservice
 - com/myproject/service/anothermodelservice

没有servlet并将其添加到Web应用程序的构建路径中。项目编译,意味着servlet可以找到服务bean和域对象,但它不会运行。无法创建services.xml中定义的bean。我检查了jar文件,包结构正确并包含类文件。但是在运行时,它仍然会出现这个错误:

Loading XML bean definitions from ServletContext resource [/WEB-INF/config/servlet.xml]
Loading XML bean definitions from ServletContext resource [/WEB-INF/config/services.xml]
Context initialization failed
org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from ServletContext resource [/WEB-INF/config/services.xml]; nested exception is org.springframework.beans.FatalBeanException: Unable to create DWR bean creator for 'com.myproject.abstractmodels.ModelConstants#0'.; nested exception is java.lang.ClassNotFoundException: com.myproject.abstractmodels.ModelConstants

如何使jar文件更正此问题?我是否还需要将WEB-INF目录放在jar文件中?是否需要一些特殊的Manifest配置?

1 个答案:

答案 0 :(得分:0)

不能将jar放入项目的构建路径中。它必须放在WEB-INF / lib文件夹中,Eclipse将

  • 自动将此jar放入构建路径
  • 将此jar部署为Web应用程序的一部分,根据servlet规范,它将位于webapp的类路径中。

如果将jar放在项目构建路径中,项目将编译,但jar不会成为已部署的webapp的一部分。