プログラミングによるファイルの追加
既存のアプリケーションへのファイルの追加は、管理コンソール、 wsadmin ツール、またはプログラミングによって行うことができます。この例では、プログラミングによってファイルを追加する方法 を説明します。
始める前に
このタスクでは、MBean プログラミングに関する基本的な知識があることが前提になっています。MBean プログラミングについて詳しくは、MBean Java™ アプリケーション・プログラミング・インターフェース (API) に関する文書を参照してください。このインフォメーション・センターでは、 をクリックします。
WebSphere® Application Server 上でアプリケーションにファイルを追加するには、まずアプリケーションをインストールする必要があります。
このタスクについて
以下のタスクを実行し、プログラミングによってアプリケーションにファイルを追加します。
手順
- WebSphere Application Server に接続します。
- アプリケーション管理プロキシーを作成します。
- イベントを listen するための通知フィルターを作成します。
- リスナーを追加します。
- アプリケーションにファイルを追加します。
- プログラムが終了しないように、タイムアウトまで待ちます。
- Java Management Extensions (JMX) 通知を listen し、操作の完了を認識します。
- ファイルを追加したら、リスナーを除去して終了します。
タスクの結果
例
以下の例には、前のステップに基づいた、アプリケーションへのファイルの追加方法が示されています。 一部のステートメントは印刷目的のために複数行に分割されています。
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 FileAdd {
public static void main (String [] args) {
try {
// 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);
String appName = "MyApp";
String fileURI = "test.war/com/acme/abc.jsp";
![[Windows]](../images/windows.gif)
String fileContents = "C:¥temp¥abc.jsp";
![[Linux]](../images/linux.gif)
![[HP-UX]](../images/hpux.gif)
![[Solaris]](../images/solaris.gif)
![[AIX]](../images/aixlogo.gif)
![[z/OS]](../images/ngzos.gif)
![[IBM i]](../images/iseries.gif)
String fileContents = "/temp/abc.jsp";
//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);
Hashtable options = new Hashtable();
options.put (AppConstants.APPDEPL_LOCALE, Locale.getDefault());
options.put (AppConstants.APPUPDATE_CONTENTTYPE, AppConstants.APPUPDATE_CONTENT_FILE);
// Update the application
proxy.updateApplication ( appName,
fileURI,
fileContents,
AppConstants.APPUPDATE_ADD,
options,
null);
// Wait; the installation Application Programming Interface (API) is
// asynchronous and so returns immediately.
// If the program does not wait here, the program ends.
Thread.sleep(90000); // 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);
}
}
}