既存のアプリケーションの部分的な追加、更新、または削除は、 管理コンソール、wsadmin ツール、またはプログラミングによって行うことができます。この例では、 プログラミングによってアプリケーションを部分的に変更します。この例を使用すると、 既存のアプリケーションの部分的な追加、更新、または削除を行うことができます。 アプリケーションに対する複数の変更は、単一の .zip ファイルにパッケージすることができます。
.zip ファイルの構造を確認するには、 管理コンソールからアプリケーションの更新を参照してください。
このタスクでは、MBean プログラミングに関する基本的な知識があることが前提になっています。MBean プログラミングについては、MBean Java アプリケーション・プログラミング・インターフェース (API) 資料を参照してください。WebSphere Application Server 上でアプリケーションを部分的に追加、更新、または削除する前に、 まずアプリケーションをインストールする必要があります。
以下のタスクを実行し、プログラミングによってアプリケーションを部分的に追加、更新、または削除します。
以下の例には、前のステップに基づいた、アプリケーションの部分的な追加、更新、または削除方法が示されています。 一部のステートメントは印刷目的のために複数行に分割されています。
//Inputs: //partialApp specifies the location of the partial application. //appName specifies the name of the application. String partialApp = "C:/apps/partial.zip"; String appName = "MyApp"; //Do a get of the administrative client to connect to //WebSphere Application Server. AdminClient client = ...; //Create the application management proxy. AppManagement proxy = AppManagementProxy. getJMXProxyForClient (client); // Create the notification filter. NotificationFilterSupport myFilter = new NotificationFilterSupport(); myFilter.enableType (NotificationConstants.TYPE_APPMANAGEMENT); //Add the listener. NotificationListener listener = new AListener(_soapClient, myFilter, "Install: " + appName, AppNotification.UPDATE); //Partially change the existing application, MyApp. Hashtable options = new Hashtable(); options.put (AppConstants.APPDEPL_LOCALE, Locale.getDefault()); options.put (AppConstants.APPUPDATE_CONTENTTYPE, AppConstants.APPUPDATE_CONTENT_PARTIALAPP); proxy.updateApplication ( appName, null, partialApp, null, options, null); // 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); } } }