アプリケーションのインストールは、管理コンソール、 wsadmin ツール、またはプログラミングによって行うことができます。この例を使用し、プログラミングによって アプリケーションをインストールします。
WebSphere Application Server 上にアプリケーションをインストールする前に、まず アプリケーションを作成または更新し、アセンブリー・ツールを使用してアセンブルする必要があります。
以下のタスクを実行し、プログラミングによってアプリケーションをインストールします。
以下の例には、前のステップに基づいた、アプリケーションのインストール方法が示されています。 一部のステートメントは印刷目的のために複数行に分割されています。
import java.lang.*; import java.io.*; import java.util.*; import java.lang.reflect.*; import com.ibm.websphere.management.application.*; import com.ibm.websphere.management.application.client.*; import com.ibm.websphere.management.*; import javax.management.*; public class Install { public static void main(String[] args) { try { String earFile = "C:/test/test.ear"; String appName = "MyApp"; // Preparation phase: Begin // Through the preparation phase you populate the enterprise archive (EAR) file with // WebSphere Application Server-specific binding information. For example, you can specify // Java Naming and Directory Interface (JNDI) names for enterprise beans, or virtual hosts // for Web modules, and so on. // First, create the controller and populate the EAR file with the appropriate options. Hashtable prefs = new Hashtable(); prefs.put(AppConstants.APPDEPL_LOCALE, Locale.getDefault()); // You can optionally run the default binding generator by using the following options. // Refer to Java documentation for the AppDeploymentController class to see all the // options that you can set. Properties defaultBnd = new Properties(); prefs.put (AppConstants.APPDEPL_DFLTBNDG, defaultBnd); defaultBnd.put (AppConstants.APPDEPL_DFLTBNDG_VHOST, "default_host"); // Create the controller. AppDeploymentController controller = AppDeploymentController .readArchive(earFile, prefs); AppDeploymentTask task = controller.getFirstTask(); while (task != null) { // Populate the task data. String[][] data = task.getTaskData(); // Manipulate task data which is a table of stringtask. task.setTaskData(data); task = controller.getNextTask(); } controller.saveAndClose(); Hashtable options = controller.getAppDeploymentSavedResults(); // The previous options table contains the module-to-server relationship if it was set by // using tasks. //Preparation phase: End // Get a connection to WebSphere Application Server. String host = "localhost"; String port = "8880"; String target = "WebSphere:cell=cellName,node=nodeName,server=server1"; Properties config = new Properties(); config.put (AdminClient.CONNECTOR_HOST, host); config.put (AdminClient.CONNECTOR_PORT, port); config.put (AdminClient.CONNECTOR_TYPE, AdminClient.CONNECTOR_TYPE_SOAP); System.out.println ("Config: " + config); AdminClient _soapClient = AdminClientFactory.createAdminClient(config); // Create the application management proxy, AppManagement. AppManagement proxy = AppManagementProxy. getJMXProxyForClient (_soapClient); // If code for the preparation phase has been run, then you already have the options table. // If not, create a new table and add the module-to-server relationship to it by uncommenting // the next statement. //Hashtable options = new Hashtable(); options.put (AppConstants.APPDEPL_LOCALE, Locale.getDefault()); // Uncomment the following statements to add the module to the server relationship table if // the preparation phase does not collect it. //Hashtable module2server = new Hashtable(); //module2server.put ("*", target); //options.put (AppConstants.APPDEPL_MODULE_TO_SERVER, module2server); //Create the notification filter for listening to installation events. NotificationFilterSupport myFilter = new NotificationFilterSupport(); myFilter.enableType (AppConstants.NotificationType); //Add the listener. NotificationListener listener = new AListener(_soapClient, myFilter, "Install: " + appName, AppNotification.INSTALL); // Install the application. proxy.installApplication (earFile, appName, options, null); System.out.println ("After install App is called.."); // Wait for some timeout. The installation application programming interface (API) is // asynchronous and so returns immediately. // If the program does not wait here, the program ends. Thread.sleep(300000); // Wait so that the program does not end. } catch (Exception e) { e.printStackTrace(); } } } // Specify the Java Management Extensions (JMX) notification listener for JMX events. class AListener implements NotificationListener { AdminClient _soapClient; NotificationFilterSupport myFilter; Object handback; ObjectName on; String eventTypeToCheck; public AListener(AdminClient cl, NotificationFilterSupport fl, Object h, String eType) throws Exception { _soapClient = cl; myFilter = fl; handback = h; eventTypeToCheck = eType; Iterator iter = _soapClient.queryNames (new ObjectName( "WebSphere:type=AppManagement,*"), null).iterator(); on = (ObjectName)iter.next(); System.out.println ("ObjectName: " + on); _soapClient.addNotificationListener (on, this, myFilter, handback); } public void handleNotification (Notification notf, Object handback) { AppNotification ev = (AppNotification) notf.getUserData(); System.out.println ("!! JMX event Recd: (handback obj= " + handback+ "): " + ev); //When the installation is done, remove the listener and quit. if (ev.taskName.equals (eventTypeToCheck) && (ev.taskStatus.equals (AppNotification.STATUS_COMPLETED) || ev.taskStatus.equals (AppNotification.STATUS_FAILED))) { try { _soapClient.removeNotificationListener (on, this); } catch (Throwable th) { System.out.println ("Error removing listener: " + th); } System.exit (0); } } }
アプリケーションをインストールしたら、明示的にアプリケーションを開始するか、または停止してサーバーを再始動する必要があります。