Maven 2 是否有一个Maven插件来在J2EE应用程序中打包实体bean?
我还没有找到一个Maven插件或目标,可以打包我的应用程序并将其部署到Glassfish上而不会出错。我得到一个例外: [错误]com.sun.enterprise.admin.cli.CommandException:远程故障:准备应用程序时异常:java.lang.RuntimeException:无法解析与名为[man java really Studes app]的模块范围内的持久性单元引用名称[org.us.impl.MyClass/entityManagerFactory]对应的持久性单元。请验证您的申请 这不是Spring/Hibernate/EntityManagerFactory/Jpa问题。该应用程序在嵌入式Maven Glassfish容器中运行良好 我在pom.xml中将包装更改为ear,并在部署到Glassfish时得到了这个 部署期间出错:org.xml.sax.SAXParseException:元素类型“application”的内容不完整,必须匹配“(图标?、显示名称、说明?、模块+、安全角色*)” 是否有一个插件可以满足J2EE打包需求 额外的问题:由于实体(仅仅是POJO!)和应用程序需要不同的打包方式,所以最好将它们分为Maven子项目吗 我没有找到一个Maven插件或目标,它将打包我的应用程序并部署到Glassfish中,不会出错 对于打包,您需要的东西都有:jar的Maven 2 是否有一个Maven插件来在J2EE应用程序中打包实体bean?,maven-2,jakarta-ee,glassfish,Maven 2,Jakarta Ee,Glassfish,我还没有找到一个Maven插件或目标,可以打包我的应用程序并将其部署到Glassfish上而不会出错。我得到一个例外: [错误]com.sun.enterprise.admin.cli.CommandException:远程故障:准备应用程序时异常:java.lang.RuntimeException:无法解析与名为[man java really Studes app]的模块范围内的持久性单元引用名称[org.us.impl.MyClass/entityManagerFactory]对应的持久
maven jar插件
(包括jar打包JPA实体),war的maven war插件
,ejb jar的maven ejb插件
,ear的maven ear插件
,资源适配器的maven rar插件
这不是Spring/Hibernate/EntityManagerFactory/Jpa问题。该应用程序在嵌入式Maven Glassfish容器中运行良好
好吧,我仍然想说,无论如何,在某个地方存在JPA配置问题,容器显然无法找到(默认?)持久化单元。但是,由于我不知道您正在运行的应用程序的类型(我猜这是一个Web应用程序,但希望得到确认),您的persistence.xml
是什么样子,您如何注入EntityManager
,您如何配置数据库访问,您如何配置Spring,您正在运行的GlassFish版本,等等,很难说更多
我在pom.xml中将包装更改为ear,并在部署到Glassfish时得到了这个
那没那么容易。构建EAR通常涉及多模块构建,您需要提供一个特殊的部署描述符。但我不相信你需要一个耳塞,如果你能避免的话,就不要用它
是否有一个插件可以满足J2EE打包需求
正如我所说,从J2EE到JavaEE6,您需要的一切都有插件。只需提供上述要求的详细信息
额外的问题:由于实体(仅仅是POJO!)和应用程序需要不同的打包方式,所以最好将它们分为Maven子项目吗
实体和应用程序不需要(总是)进行不同的打包,您可以直接在WAR中打包实体(我在推断,但我怀疑这是您的情况)。我只是觉得您在某个地方遇到了配置问题,即使应用程序正在GF Embedded中运行
顺便说一句,Java EE中几乎所有的东西都是POJO(实体、会话bean、消息驱动bean等),但对打包没有直接影响,打包和POJOness是不相关的。org.us.impl.MyClass有一个@PersistenceUnit注释。persistince由Spring管理,但Glassfish会扫描注释类并尝试自行解决它。你可以告诉Glassfish通过添加
metadata-complete="true"
到您的web.xml,如下所示
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
metadata-complete="true">
进一步阅读:谢谢你,帕斯卡。“实体和应用程序不需要(总是)进行不同的打包,您可以直接在WAR中打包实体(我推断,但我怀疑这是您的情况)。”这很好。我读到的大部分内容是引导我沿着EAR文件的路径前进。一个项目需要ear文件做什么?至于我们的项目。我们有五个JPA实体和一些相当简单的JAX-RS资源作为服务公开。我将重新检查正在创建的war,并确保正确配置了Maven。在使用EJB时,您必须使用EAR。即使这在JavaEE6中不再严格适用,您也可以在战争中部署EJB(当然,您不会从EARs提供的类加载器隔离中获益,但大多数应用程序都不需要)。感谢您发布自己的答案。不过,这与最初的问题相去甚远。