应用程序客户端jar的多个入口点(mainclass)

时间:2009-08-12 15:07:06

标签: java jar glassfish application-client

如何在应用程序客户端jar中设置多个入口点?

我正在使用Glassfish应用服务器。我可以使用

抓住客户端
 asadmin get-client-stubs --appname APPLICATION_NAME .

我目前可以运行我在MANIFEST.MF中指定的默认主类。但是,我希望能够在运行时指定另一个mainclass。

appclient -client MYJAR.jar -mainclass com.mystuff.Main1
and
appclient -client MYJAR.jar -mainclass com.mystuff.Main2

Main1和Main2都有“public static void main”入口点。

如果我指定一个不在MANIFEST.MF中的mainclass,我会得到以下异常:

Exception in thread "main" java.lang.RuntimeException: java.lang.IllegalArgumentException: Could not locate an embedded app client matching the main class name

我是否需要进行任何更改才能让appclient引用其他主类?

1 个答案:

答案 0 :(得分:1)

http://forums.java.net/jive/thread.jspa?threadID=65549&tstart=0< - 我在这里转发了同样的问题,有人给出了答案......

  

您好。

     

GlassFish应用客户端容器使用-mainclass选项来区分打包到同一EAR中的多个客户端,因此,在启动时,用户可以选择打包在一起启动的多个客户端中的哪一个。正如您所发现的那样,它不允许用户覆盖开发人员关于在给定客户端中运行的主类的意图。

     

您可以使用v3中提供的备用appclient语法执行您想要的操作:

     

http://docs.sun.com/app/docs/doc/820-7701/appclient-1m?a=view

     

对于v2,您当然可以编写单个主类来接受指定要运行的类的参数,然后动态加载该类并调用其主方法。

     

-Tim