我已将我的 pom 文件配置为使用 maven-embedded-glassfish-plugin。事实上,这是生成项目的 jersey-webapp 工件。pom的插件部分如下:-
org.glassfish maven-embedded-glassfish-plugin ${glassfish.version} 嵌入式-glassfish /Users/vdevigere/Projects/ShoppingSite/shoppingsite-ws/target/${project.build.finalName}.war 测试真 8080 com.sun .jersey jersey-servlet ${jersey.version} javax.servlet javax.servlet-api 3.0.1
当我执行 mvn embedded-glassfish:run 时,我得到一个堆栈跟踪,通知我找不到 javax.ejb.Stateless。堆栈跟踪如下
EVERE:调用 com.sun.enterprise.web.WebApplication 类启动方法时出现异常 java.lang.Exception: java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException : java.lang.NoClassDefFoundError: javax/ejb/Stateless at com.sun.enterprise.web.WebApplication.start(WebApplication.java:138) at org.glassfish.internal.data.EngineRef.start(EngineRef.java:130)在 org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:269) 在 org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:294) 在 com.sun.enterprise.v3.server.ApplicationLifecycle .deploy(ApplicationLifecycle.java:462) 在 com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240) 在 org.glassfish.deployment.admin.DeployCommand。在 com.sun.enterprise.v3.admin.CommandRunnerImpl 执行 (DeployCommand.java:382)$1.execute(CommandRunnerImpl.java:355) 在 com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:370 ) 在 com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1064) 在 com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:96) 在 com.sun.enterprise .v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1244) 在 com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1232) 在 com.sun.enterprise.admin.cli .embeddable.DeployerImpl.deploy(DeployerImpl.java:129) 在 com.sun.enterprise.admin.cli.embeddable.DeployerImpl.deploy(DeployerImpl.java:105) 在 org.glassfish.maven.PluginUtil.doDeploy(PluginUtil.java :106) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect .Method.invoke(Method.java:597) 在 org.glassfish.maven.AbstractDeployMojo.doDeploy(AbstractDeployMojo.java:239) 在 org.glassfish.maven.RunMojo.execute(RunMojo.java:68) 在 org.apache。 maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(DefaultLifecycleExecutor.java: 569)在 org.apache.maven.lifecycle.DefaultLifecycleExecutor。executeGoal(DefaultLifecycleExecutor.java:539) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348) at org.apache .maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180) 在 org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328) 在 org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138) 在org.apache.maven.cli.MavenCli.main(MavenCli.java:362) 在 org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method ) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect。DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) at org.codehaus.classworlds .Launcher.launch(Launcher.java:255) 在 org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) 在 org.codehaus.classworlds.Launcher.main(Launcher.java:375)
我已经确认 javax.ejb.Stateless 是 glassfish-embedded-web 的一部分,它作为测试范围依赖项包含在内。
org.glassfish.extras glassfish-embedded-web ${glassfish.version} 测试
我不知道为什么这不起作用。我能够将应用程序部署到实际的 glassfish 应用服务器。