如何在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$
您可以在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中不可能进行复制。 请帮助我们解决这个问题。