为什么Glassfish不识别罐子?

时间:2013-11-08 22:41:07

标签: maven java-ee glassfish

我想在终端上使用命令asadmin deploy testapp-1.0-SNAPSHOT.jar在glassfish 4上部署一个jar。 jar的完整布局是

/META-INF/MANIFEST.MF
/META-INF/maven/com.test/testapp/pom.properties
/META-INF/maven/com.test/testapp/pom.xml
/com/test/testapp/*.class

但每次我收到错误

remote failure: Archive type of jar was not recognized
Command deploy failed.

我用maven编译并打包jar。

提前致谢。

3 个答案:

答案 0 :(得分:6)

似乎只有个别jar包含Enterprise Java Bean才能部署。

有两种方法可以使类成为Enterprise Java Bean。

  1. 使用从javax.ejb包中定义注释的组件注释类(例如javax.ejb.Stateless

  2. 5.2 Packaging Enterprise Beans

    中所示的META-INF目录中的部署描述符ejb-jar.xml(或glassfish-ejb-jar.xml,如果使用Glassfish)中指定Enterprise Java Bean
  3. 这是一个取自Simple Stateless with Descriptor

    的简单示例
    <ejb-jar 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/ejb-jar_3_0.xsd"
             version="3.0">
      <enterprise-beans>
        <session>
          <ejb-name>CalculatorImpl</ejb-name>
          <business-local>org.superbiz.calculator.CalculatorLocal</business-local>
          <business-remote>org.superbiz.calculator.CalculatorRemote</business-remote>
          <ejb-class>org.superbiz.calculator.CalculatorImpl</ejb-class>
          <session-type>Stateless</session-type>
          <transaction-type>Container</transaction-type>
        </session>
      </enterprise-beans>
    </ejb-jar>
    

答案 1 :(得分:2)

您不会将JAR文件部署到Java EE容器中。您希望打包WAR或EAR文件,该文件可能在其WEB-INF / lib目录中包含JAR文件。

答案 2 :(得分:0)

this post一样,从代码中替换leambda表达式,然后重试。会工作,我敢肯定。