maven-glassfish-plugin 尝试在域已经启动时启动它

maven-glassfish-plugin tries to start the domain when it is already started

我刚刚开始使用 maven-glassfish-plugin。我得到了起始域目标。但是,当我尝试执行部署目标时,插件认为域未启动并尝试重新启动它 - 这显然失败了。请参阅下面的日志:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
> mvn glassfish:start-domain
[INFO] --- maven-glassfish-plugin:2.1:start-domain (default-cli) @ arquillian-sample ---
[INFO] Deprecated syntax, instead use:
[INFO] asadmin --passwordfile C:\\apps\\glassfish-3.0.1\\glassfish/domains/domain1/config/domain-passwords --interactive=false --user admin --echo --terse=false start-domain [options] ...
[INFO] asadmin --host localhost --port 4848 --user admin --passwordfile C:\\apps\\glassfish-3.0.1\\glassfish/domains/domain1/config/domain-passwords --interactive=false --echo=true --terse=false start-domain --debug=true --domaindir C:\\apps\\glassfish-3.0.1\\glassfish\\domains --help=false --upgrade=false --verbose=false domain1
[INFO] Waiting for DAS to start ...
[INFO] Started domain: domain1
[INFO] Domain location: C:\\apps\\glassfish-3.0.1\\glassfish\\domains\\domain1
[INFO] Log file: C:\\apps\\glassfish-3.0.1\\glassfish\\domains\\domain1\\logs\\server.log
[INFO] Admin port for the domain: 4848
[INFO] Debug port for the domain: 9009
[INFO] Command start-domain executed successfully.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

> mvn glassfish:deploy
[INFO] --- maven-glassfish-plugin:2.1:deploy (default-cli) @ arquillian-sample ---
[INFO] Domain domain1 isn't started. Starting it for you.
[INFO] Deprecated syntax, instead use:
[INFO] asadmin --passwordfile C:\\apps\\glassfish-3.0.1\\glassfish/domains/domain1/config/domain-passwords --interactive=false --user admin --echo --terse=false start-domain [options] ...
[INFO] asadmin --host localhost --port 4848 --user admin --passwordfile C:\\apps\\glassfish-3.0.1\\glassfish/domains/domain1/config/domain-passwords --interactive=false --echo=true --terse=false start-domain --debug=true --domaindir C:\\apps\\glassfish-3.0.1\\glassfish\\domains --help=false --upgrade=false --verbose=false domain1
[INFO] There is a process already using the admin port 4848 -- it probably is another instance of a GlassFish server.
[INFO] Command start-domain failed.
[ERROR] Unable to start domain"domain1".
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
  • 为什么插件检测不到域已经启动?
  • 为什么我会收到所有"不推荐使用的语法"警告?
  • 为了解决问题 #1,我只是尝试在服务器未运行时发出部署目标。这次部署目标成功启动服务器,但部署失败并显示消息"CLI136 端口 0 应为数值"。见下文:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    > mvn glassfish:deploy
    [INFO] --- maven-glassfish-plugin:2.1:deploy (default-cli) @ arquillian-sample ---
    [INFO] Domain domain1 isn't started. Starting it for you.
    [INFO] Deprecated syntax, instead use:
    [INFO] asadmin --passwordfile C:\\apps\\glassfish-3.0.1\\glassfish/domains/domain1/config/domain-passwords --interactive=false --user admin --echo --terse=false start-domain [options] ...
    [INFO] asadmin --host localhost --port 4848 --user admin --passwordfile C:\\apps\\glassfish-3.0.1\\glassfish/domains/domain1/config/domain-passwords --interactive=false --echo=true --terse=false start-domain --debug=true --domaindir C:\\apps\\glassfish-3.0.1\\glassfish\\domains --help=false --upgrade=false --verbose=false domain1
    [INFO] Waiting for DAS to start ...
    [INFO] Started domain: domain1
    [INFO] Domain location: C:\\apps\\glassfish-3.0.1\\glassfish\\domains\\domain1
    [INFO] Log file: C:\\apps\\glassfish-3.0.1\\glassfish\\domains\\domain1\\logs\\server.log
    [INFO] Admin port for the domain: 4848
    [INFO] Debug port for the domain: 9009
    [INFO] Command start-domain executed successfully.
    [INFO] Command deploy failed.
    [ERROR] CLI136 Port 0 should be a numeric value.
    [ERROR] Deployment of S:\\Projects\\archfirstunf\\java\\trunk\\examples\\arquillian-sample\\target\\arquillian-sample.war failed.
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD FAILURE

    我做错了什么?

    这是我的插件配置:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <plugin>
        <groupId>org.glassfish.maven.plugin</groupId>
        maven-glassfish-plugin</artifactId>
        <version>2.1</version>
        <configuration>
            <glassfishDirectory>${glassfish.directory}</glassfishDirectory>
            <user>admin</user>
            <passwordFile>${glassfish.directory}/domains/domain1/config/domain-passwords</passwordFile>
            <domain>
                <name>domain1</name>
            </domain>
            <components>
                <component>
                    <name>${project.artifactId}</name>
                    target/${project.build.finalName}.war</artifact>
                </component>
            </components>
            <debug>true</debug>
            <terse>false</terse>
            <echo>true</echo>
        </configuration>
    </plugin>

    我正在使用以下配置(注意 domain 元素中的 httpPortadminPort):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    <plugin>
        <groupId>org.glassfish.maven.plugin</groupId>
        maven-glassfish-plugin</artifactId>
        <version>2.1</version>
        <configuration>
            <glassfishDirectory>${glassfish.directory}</glassfishDirectory>
            <user>admin</user>
            <passwordFile>${glassfish.directory}/domains/domain1/config/domain-passwords</passwordFile>
            <domain>
                <name>domain1</name>
                <httpPort>8080</httpPort>
                4848</adminPort>
            </domain>
            <components>
                <component>
                    <name>${project.artifactId}</name>
                    target/${project.build.finalName}.war</artifact>
                </component>
            </components>
            <debug>true</debug>
            <terse>false</terse>
            <echo>true</echo>
        </configuration>
    </plugin>

    没有它们,事情就不会按预期工作(尽管它们应该是可选的)。但是启动、部署(无论是否启动服务器)等对我来说都很好。

    PS:我不记得这是否重要,但我使用的是 2.2-SNAPSHOT 版本的插件。

    更新:这是我使用的确切配置:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
      <plugin>
        <groupId>org.glassfish.maven.plugin</groupId>
        maven-glassfish-plugin</artifactId>
        <version>2.2-SNAPSHOT</version>
        <configuration>
          <glassfishDirectory>${glassfish.home}</glassfishDirectory>
          <user>${domain.username}</user>
          <passwordFile>${glassfish.home}/domains/${project.artifactId}/master-password</passwordFile>
          true</autoCreate>
          <debug>true</debug>
          <echo>true</echo>
          <skip>${test.int.skip}</skip>
          <domain>
            <name>${project.artifactId}</name>
            <httpPort>8080</httpPort>
            4848</adminPort> <!-- [ERROR] CLI136 Port 0 should be a numeric value. -->
          </domain>
          <components>
            <component>
              <name>${project.artifactId}</name>
              <!--artifact>${project.build.directory}/${project.build.finalName}.war</artifact-->
              ${project.build.directory}/${project.build.finalName}</artifact>
            </component>
          </components>
        </configuration>
      </plugin>

    这是我得到的输出:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    $ mvn glassfish:deploy
    [INFO] Scanning for projects...
    ...
    [INFO]                                                                        
    [INFO] ------------------------------------------------------------------------
    [INFO] Building maven-glassfish-testcase Maven Webapp 1.0-SNAPSHOT
    [INFO] ------------------------------------------------------------------------
    [INFO]
    [INFO] --- maven-glassfish-plugin:2.2-SNAPSHOT:deploy (default-cli) @ maven-glassfish-testcase ---
    ...
    [INFO] asadmin --host localhost --port 4848 --user admin --passwordfile /home/pascal/opt/glassfishv3/glassfish/domains/maven-glassfish-testcase/master-password --interactive=false --echo=true --terse=true deploy --name maven-glassfish-testcase --force=false --precompilejsp=false --verify=false --enabled=true --generatermistubs=false --availabilityenabled=false --keepreposdir=false --keepfailedstubs=false --logReportedErrors=true --upload=false --help=false /home/pascal/Projects/stackoverflow/maven-glassfish-testcase/target/maven-glassfish-testcase
    [INFO] Application deployed successfully with name maven-glassfish-testcase.
    [INFO]
    [INFO]
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    ...

    请注意,我没有收到任何奇怪的"已弃用"消息。一切都很好。

    添加 httpPort 和 adminPort 增加了一个新的复杂性 - 现在我进行部署时身份验证失败(即使相同的身份验证正在通过 start-domain 目标)。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    > mvn glassfish:start-domain
    [INFO] --- maven-glassfish-plugin:2.2-SNAPSHOT:start-domain (default-cli) @ arquillian-sample ---
    [INFO] Deprecated syntax, instead use:
    [INFO] asadmin --passwordfile C:\\apps\\glassfish-3.0.1\\glassfish/domains/domain1/config/domain-passwords --interactive=false --user admin --echo --terse=false start-domain [options] ...
    [INFO] asadmin --host localhost --port 4848 --user admin --passwordfile C:\\apps\\glassfish-3.0.1\\glassfish/domains/domain1/config/domain-passwords --interactive=false --echo=true --terse=false start-domain --debug=true --domaindir C:\\apps\\glassfish-3.0.1\\glassfish\\domains --help=false --upgrade=false --verbose=false domain1
    [INFO] Waiting for DAS to start ...........
    [INFO] Started domain: domain1
    [INFO] Domain location: C:\\apps\\glassfish-3.0.1\\glassfish\\domains\\domain1
    [INFO] Log file: C:\\apps\\glassfish-3.0.1\\glassfish\\domains\\domain1\\logs\\server.log
    [INFO] Admin port for the domain: 4848
    [INFO] Debug port for the domain: 9009
    [INFO] Command start-domain executed successfully.
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------

    > mvn glassfish:deploy
    [INFO] --- maven-glassfish-plugin:2.2-SNAPSHOT:deploy (default-cli) @ arquillian-sample ---
    [INFO] Deprecated syntax, instead use:
    [INFO] asadmin --port 4848 --host localhost --passwordfile C:\\apps\\glassfish-3.0.1\\glassfish/domains/domain1/config/domain-passwords --interactive=false --user admin --echo --terse=false deploy [options] ...
    [INFO] Command deploy failed.
    [ERROR] Authentication failed for user: admin
    [ERROR] (Usually, this means invalid user name and/or password)
    [ERROR] Deployment of S:\\Projects\\archfirstunf\\java\\trunk\\examples\\arquillian-sample\\target\\arquillian-sample.war failed.
    [ERROR] For more detail on what might be causing the problem try running maven with the --debug option
    [ERROR] or setting the maven-glassfish-plugin"echo" property to"true".
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD FAILURE
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 2.973s
    [INFO] Finished at: Wed Nov 10 01:51:04 EST 2010
    [INFO] Final Memory: 10M/183M
    [INFO] ------------------------------------------------------------------------

    将版本更改为 2.2-SNAPSHOT 没有任何区别。顺便说一句,快照在 java.net 存储库中不可用 - 我必须去这里获取它:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        <pluginRepository>
            <id>ocean</id>
            <url>http://maven.ocean.net.au/snapshot</url>
            <releases>
                <enabled>false</enabled>
                <updatePolicy>never</updatePolicy>
            </releases>
            <snapshots>
                <enabled>true</enabled>
                <updatePolicy>always</updatePolicy>
            </snapshots>
        </pluginRepository>