Java 在servlet中传递运行时参数

Java 在servlet中传递运行时参数,java,servlets,struts,Java,Servlets,Struts,我正在尝试开发一个web应用程序,当单击一个按钮时,servlet必须使用一些命令行参数启动。这是必需的,因为servlet类运行corba客户机。如果没有这些命令行参数“-ORBInitialHost xxx.xx.xx.xx-ORBInitialPort 1050”,servlet类无法调用corba客户端,其中x是ip地址。当我使用以下命令将其作为独立java应用程序执行时,程序运行良好“java HelloClient-ORBInitialHost xxx.xx.xx.xx-ORBIni

我正在尝试开发一个web应用程序,当单击一个按钮时,servlet必须使用一些命令行参数启动。这是必需的,因为servlet类运行corba客户机。如果没有这些命令行参数“
-ORBInitialHost xxx.xx.xx.xx-ORBInitialPort 1050
”,servlet类无法调用corba客户端,其中x是ip地址。当我使用以下命令将其作为独立java应用程序执行时,程序运行良好“
java HelloClient-ORBInitialHost xxx.xx.xx.xx-ORBInitialPort 1050

只需将它们作为请求参数传递,然后在调用corba客户端时使用它们

例如,url为
http://domain.com/corbaServlet?param1=foo¶m2=bar
然后

public void doGet(..) {
    String param1 = request.getParameter("param1");
    String param2 = request.getParameter("param2");
    startCorbaClient(param1, param2);
}

能否将它们作为系统参数添加到应用程序服务器启动脚本中,并使用system.getProperty()在servlet中检索它们

在您的servlet init()方法中


您需要创建
ORB
,并将这些参数作为Java
属性传递给它

...
Properties props = new Properties();
props.add("org.omg.CORBA.ORBInitialHost", httpServletRequest.getParameter("initialHost"));
props.add("org.omg.CORBA.ORBInitialPort", httpServletRequest.getParameter("initialPort"));
ORB orb = ORB.init(null, props);
// do some work with your ORB
...

但是我提到的参数是命令行参数,如果它们作为正式参数传递给方法,jvm如何知道这些参数。如果在独立应用程序中可以注意到第二个命令。您说您是从servlet启动corba客户端。所以我假设您正在运行Runtime.exec(…)。如果没有,请说明您的情况。
orbHost = System.getProperty("orb.host");
orbPort = System.getProperty("orb.port");
...
Properties props = new Properties();
props.add("org.omg.CORBA.ORBInitialHost", httpServletRequest.getParameter("initialHost"));
props.add("org.omg.CORBA.ORBInitialPort", httpServletRequest.getParameter("initialPort"));
ORB orb = ORB.init(null, props);
// do some work with your ORB
...