当前位置: 首页 > 知识库问答 >
问题:

如何使用appclient复制“ant run”以执行Glassfish ACC客户端

程亦
2023-03-14

如何在IDE之外运行appclient?虽然似乎可以使用appclient从CLI运行独立的JNDI查找应用程序,但它似乎不适用于ACC客户端。然而,这应该是可能的:

运行应用程序客户端

使用appclient脚本运行应用程序客户端,无论是否启用Java Web Start,都可以使用appclient脚本启动ACC。

GlassFish Server开源版应用程序开发指南4.0版开发Java客户端10-15页186

步骤:

1.)创建了一个@Remote接口作为JavaSE库API

2.)创建了一个带有ejb模块的企业应用程序;添加接口API

3.)在ejb模块中,实现@Remote接口

4.)创建ACC应用程序;添加接口API;添加到企业应用程序

5.)从IDE插入ejb

6.)部署EAR,然后从IDE运行ACC客户端

这是通过在GlassFish服务器上创建和运行应用程序客户机来实现的。

与ant一起运行,"ant run"来自CLI:

-run:
     [java] 2

run:

BUILD SUCCESSFUL
Total time: 28 seconds
thufir@dur:~/NetBeansProjects/SingletonACC$ 

在这种情况下,这是正确的输出。(每次客户端运行时,整数都会增加1。)

我查看了蚂蚁文件,但无法解读“蚂蚁奔跑”在本例中的作用:

   <!--
                =================
                EXECUTION SECTION
                =================
            -->
    <target depends="dist,run-deploy,-as-retrieve-option-workaround,-init-run-macros,-run-pregfv3,-run" description="Run a main class." name="run"/>
    <target if="j2ee.appclient.tool.args" name="-run-pregfv3">
        <carproject:run-appclient-pregfv3/>
    </target>
    <target name="-run" unless="j2ee.appclient.tool.args">
        <carproject:run-appclient/>
    </target>
    <target depends="dist,run-deploy,-as-retrieve-option-workaround,-init-run-macros,-run-single-pregfv3,-run-single" description="Run a single class." name="run-single"/>
    <target depends="dist,run-deploy,-as-retrieve-option-workaround,-init-run-macros" name="-run-single" unless="j2ee.appclient.tool.args">
        <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
        <carproject:run-appclient serverparams="${j2ee.appclient.tool.jvmoptions.class}${run.class}"/>
    </target>
    <target depends="dist,run-deploy,-as-retrieve-option-workaround,-init-run-macros" if="j2ee.appclient.tool.args" name="-run-single-pregfv3">
        <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
        <carproject:run-appclient-pregfv3/>
    </target>
    <target depends="init" name="-init-run-macros">
        <macrodef name="run-appclient" uri="http://www.netbeans.org/ns/car-project/1">
            <attribute default="${application.args.param}" name="args"/>
            <attribute default="${j2ee.appclient.tool.jvmoptions}${client.jar}" name="serverparams"/>
            <element name="customize" optional="true"/>
            <sequential>
                <java dir="${basedir}" fork="true" jar="${client.jar}">
                    <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
                    <jvmarg line="@{serverparams}"/>
                    <jvmarg line="${run.jvmargs.param}"/>
                    <arg line="@{args}"/>
                    <syspropertyset>
                        <propertyref prefix="run-sys-prop."/>
                        <mapper from="run-sys-prop.*" to="*" type="glob"/>
                    </syspropertyset>
                    <env key="APPCPATH" path="${javac.classpath}"/>
                    <sysproperty key="java.system.class.loader" value="org.glassfish.appclient.client.acc.agent.ACCAgentClassLoader"/>
                    <customize/>
                </java>
            </sequential>
        </macrodef>
        <macrodef name="run-appclient-pregfv3" uri="http://www.netbeans.org/ns/car-project/1">
            <element name="customize" optional="true"/>
            <sequential>
                <java classname="${j2ee.appclient.tool.mainclass}" fork="true">
                    <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
                    <jvmarg line="${j2ee.appclient.tool.jvmoptions}"/>
                    <jvmarg line="${run.jvmargs.param}"/>
                    <arg line="${j2ee.appclient.tool.args}"/>
                    <arg line="-client ${client.jar}"/>
                    <arg line="${application.args.param}"/>
                    <classpath>
                        <path path="${j2ee.platform.classpath}:${j2ee.appclient.tool.runtime}"/>
                    </classpath>
                    <syspropertyset>
                        <propertyref prefix="run-sys-prop."/>
                        <mapper from="run-sys-prop.*" to="*" type="glob"/>
                    </syspropertyset>
                    <customize/>
                </java>
            </sequential>
        </macrodef>
    </target>
    <target if="j2ee.appclient.mainclass.args" name="-as-retrieve-option-workaround" unless="j2ee.clientName">
        <property name="client.jar" value="${dist.dir}/SingletonACCClient.jar"/>
        <sleep seconds="3"/>
        <copy failonerror="false" file="${wa.copy.client.jar.from}/SingletonACC/SingletonACCClient.jar" todir="${dist.dir}"/>
        <copy failonerror="false" flatten="true" todir="${dist.dir}/">
            <fileset dir="${wa.copy.client.jar.from}/SingletonACC" includes="**/SingletonACCClient.jar"/>
        </copy>
        <copy flatten="true" todir="${dist.dir}/SingletonACCClient">
            <fileset dir="${wa.copy.client.jar.from}/SingletonACC" includes="**/*.*ar"/>
        </copy>
        <copy failonerror="false" flatten="false" todir="${dist.dir}/SingletonACCClient">
            <fileset dir="${dist.dir}/gfdeploy/SingletonACC" includes="**/*.jar"/>
        </copy>
    </target>
    <target name="pre-run-deploy">
        <!-- Empty placeholder for easier customization. -->
        <!-- You can override this target in the ../build.xml file. -->
    </target>
    <target name="post-run-deploy">
        <!-- Empty placeholder for easier customization. -->
        <!-- You can override this target in the ../build.xml file. -->
    </target>
    <target name="-pre-nbmodule-run-deploy">
        <!-- Empty placeholder for easier customization. -->
        <!-- This target can be overriden by NetBeans modules. Don't override it directly, use -pre-run-deploy task instead. -->
    </target>
    <target name="-post-nbmodule-run-deploy">
        <!-- Empty placeholder for easier customization. -->
        <!-- This target can be overriden by NetBeans modules. Don't override it directly, use -post-run-deploy task instead. -->
    </target>
    <target name="-run-deploy-am">
        <!-- Task to deploy to the Access Manager runtime. -->
    </target>
    <target depends="init,compile,dist,pre-run-deploy,-pre-nbmodule-run-deploy,-run-deploy-nb,-init-deploy-ant,-deploy-ant,-run-deploy-am,-post-nbmodule-run-deploy,post-run-deploy,-do-update-breakpoints" name="run-deploy"/>
    <target if="netbeans.home" name="-run-deploy-nb">
        <nbdeploy clientUrlPart="${client.urlPart}" debugmode="false" forceRedeploy="${forceRedeploy}"/>
    </target>
    <target name="-init-deploy-ant" unless="netbeans.home">
        <property name="deploy.ant.archive" value="${dist.jar}"/>
        <property name="deploy.ant.resource.dir" value="${resource.dir}"/>
        <property name="deploy.ant.enabled" value="true"/>
    </target>
    <target depends="init,-run-undeploy-nb,-init-deploy-ant,-undeploy-ant" name="run-undeploy"/>
    <target if="netbeans.home" name="-run-undeploy-nb">
        <fail message="Undeploy is not supported from within the IDE"/>
    </target>
    <target depends="run-deploy,-init-display-browser,-display-browser-nb,-display-browser-cl" name="run-display-browser"/>
    <target if="do.display.browser" name="-init-display-browser">
        <condition property="do.display.browser.nb">
            <isset property="netbeans.home"/>
        </condition>
        <condition property="do.display.browser.cl">
            <and>
                <isset property="deploy.ant.enabled"/>
                <isset property="deploy.ant.client.url"/>
            </and>
        </condition>
    </target>
    <target if="do.display.browser.nb" name="-display-browser-nb">
        <nbbrowse url="${client.url}"/>
    </target>
    <target if="do.display.browser.cl" name="-get-browser" unless="browser">
        <condition property="browser" value="rundll32">
            <os family="windows"/>
        </condition>
        <condition else="" property="browser.args" value="url.dll,FileProtocolHandler">
            <os family="windows"/>
        </condition>
        <condition property="browser" value="/usr/bin/open">
            <os family="mac"/>
        </condition>
        <property environment="env"/>
        <condition property="browser" value="${env.BROWSER}">
            <isset property="env.BROWSER"/>
        </condition>
        <condition property="browser" value="/usr/bin/firefox">
            <available file="/usr/bin/firefox"/>
        </condition>
        <condition property="browser" value="/usr/local/firefox/firefox">
            <available file="/usr/local/firefox/firefox"/>
        </condition>
        <condition property="browser" value="/usr/bin/mozilla">
            <available file="/usr/bin/mozilla"/>
        </condition>
        <condition property="browser" value="/usr/local/mozilla/mozilla">
            <available file="/usr/local/mozilla/mozilla"/>
        </condition>
        <condition property="browser" value="/usr/sfw/lib/firefox/firefox">
            <available file="/usr/sfw/lib/firefox/firefox"/>
        </condition>
        <condition property="browser" value="/opt/csw/bin/firefox">
            <available file="/opt/csw/bin/firefox"/>
        </condition>
        <condition property="browser" value="/usr/sfw/lib/mozilla/mozilla">
            <available file="/usr/sfw/lib/mozilla/mozilla"/>
        </condition>
        <condition property="browser" value="/opt/csw/bin/mozilla">
            <available file="/opt/csw/bin/mozilla"/>
        </condition>
    </target>
    <target depends="-get-browser" if="do.display.browser.cl" name="-display-browser-cl">
        <fail unless="browser">
                    Browser not found, cannot launch the deployed application. Try to set the BROWSER environment variable.
                </fail>
        <property name="browse.url" value="${deploy.ant.client.url}${client.urlPart}"/>
        <echo>Launching ${browse.url}</echo>
        <exec executable="${browser}" spawn="true">
            <arg line="${browser.args} ${browse.url}"/>
        </exec>
    </target>
    <target depends="dist" name="verify">
        <nbverify file="${dist.jar}"/>
    </target>
    <target depends="init,compile-single" name="run-main">
        <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
        <carproject:java classname="${run.class}"/>
    </target>
    <target depends="init" if="netbeans.home" name="-do-update-breakpoints">
        <carproject:nbjpdaappreloaded/>
    </target>

如何在IDE之外复制“ant run”?

请注意,SingletonAcc是单独部署的,尽管它也是SingletonQueue企业应用程序的一部分,该应用程序也有一个appclient

thufir@dur:~/NetBeansProjects/SingletonACC$ 
thufir@dur:~/NetBeansProjects/SingletonACC$ /home/thufir/glassfish-4.1/glassfish/bin/asadmin list-applications
SingletonQueue  <ear, appclient, ejb>  
SingletonACC    <appclient>            
Command list-applications executed successfully.
thufir@dur:~/NetBeansProjects/SingletonACC$ 

共有1个答案

万俟超
2023-03-14

您可以在ant中启用详细日志记录,以便查看它实际执行的操作:

在NetBeans中,进入选项-

看起来ant只是在GlassFish上部署了appclient(EntAppClient.jar),然后运行文件EntAppClientClient。jar(注意双客户机)的一些参数如下:

/java/jdk1.7.0/jre/bin/java.exe 
-Xbootclasspath/p:/NetBeans/enterprise/modules/ext/javaee6-endorsed/javax.annotation.jar;/NetBeans/enterprise/modules/ext/javaee6-endorsed/jaxb-api-osgi.jar;/NetBeans/enterprise/modules/ext/javaee6-endorsed/webservices-api-osgi.jar 
-Djava.endorsed.dirs=/glassfish410/glassfish/lib/endorsed;/glassfish410/glassfish/modules/endorsed 
-javaagent:/glassfish410/glassfish/lib/gf-client.jar=mode=acscript,arg=-configxml,arg=/glassfish410/glassfish/domains/domain1/config/glassfish-acc.xml,client=jar=dist/EntAppClientClient.jar 
-Djava.system.class.loader=org.glassfish.appclient.client.acc.agent.ACCAgentClassLoader 
-jar /EntAppClient/dist/EntAppClientClient.jar

希望这有帮助:)

 类似资料:
  • 问题内容: 我的maven java项目使用maven-antrun-plugin执行部署我的应用程序的deploy.xml ant脚本。deploy.xml使用该任务,这似乎是导致问题的原因。 [INFO]执行任务 [taskdef]无法从资源net / sf / antcontrib / antlib.xml加载定义。找不到。 部署: [INFO] ----------------------

  • 问题内容: 在Java方法中,我想使用Jersey客户端对象在RESTful Web服务(也使用Jersey编写)上执行POST操作,但不确定如何使用客户端发送将用作FormParam的值在服务器上。我能够发送查询参数就好了。 问题答案: 我自己尚未完成此操作,不过Google- Fu的简短内容在blogs.oracle.com上提供了一个技术提示,其中包含您真正要求的示例。 摘自博客文章的示例:

  • 我正在使用Spring3.0 restTemboard通过调用post方法消费json webservice。 我们的应用程序部署在WAS服务器中,并试图通过创建与TLS1的套接字连接来连接producer。0.但是,现在producer只支持TLS1。1和TLS1。2. 如何强制restTempate使用TLS1。1或TLS 1.2。 通常,对于apache httpClient代码,创建自定义

  • 如何拆分列表并并行执行 我的场景-- 我从webservices获得了1000辆使用下面列表的车辆。 我想在每个列表中分割100辆车并并行执行所有列表。 谢谢

  • 我尝试为我的网站提供文件上传/下载服务,并且尝试使用openstack中的对象存储。问题是,我通过php和openstack PHPSDK做这件事没有问题,但是当我试图通过一些javascript做这件事时,我找不到一个好的sdk或方法。我没有使用node,我有一个php服务器和一个javascript客户端。我想直接从javascript客户端上传或下载文件。我不希望文件通过php服务器传输。我

  • 在我们的应用程序中,我们有外部源来处理数据并将数据插入数据库,以及应用程序使用的相同数据库。因此,数据库超载。 为了避免这种情况,我们使用了两台服务器,一台用于处理数据,另一台用于应用程序。在第一台服务器中进行处理后,我们通过复制过程将数据移动到另一台服务器。 现在,我们想将整个设置移动到Azure SQL PaaS。截至目前,Azure PaaS中不可能进行复制。 请帮助我们解决这个问题。