通过编程添加、更新或删除部分该应用程序
您可以通过管理控制台、wsadmin 工具或编程来对现有应用程序的部分添加内容、更新或删除现有应用程序的部分。此示例通过编程更改了部分应用程序。无论您要添加、更新还是删除现有的部分应用程序,都可以使用此示例。对应用程序进行的多个更改可以打包在单个压缩 .zip 文件中。
开始之前
要了解压缩 .zip 文件的结构,请参阅通过管理控制台更新应用程序。此任务假设您对 MBean 编程有基本的了解。有关 MBean 编程的信息,请参阅 MBean Java™ 应用程序编程接口 (API) 文档。 在此信息中心中,单击 。
您必须首先在 WebSphere® Application Server 上安装应用程序,才能添加、更新或删除部分该应用程序。
关于此任务
执行以下各项任务,从而通过编程来添加、更新或删除部分该应用程序。
过程
- 连接到 WebSphere Application Server。
- 创建应用程序管理代理。
- 创建通知过滤器。
- 添加侦听器。
- 部分地更改现有应用程序。
- 如果超时请等待,以使程序不会结束。
- 侦听 Java 管理扩展 (JMX) 通知,以了解操作的完成情况。
结果
成功运行代码之后,就更改了应用程序。
示例
以下示例显示如何根据先前步骤添加、更新或删除应用程序的一部分。为了便于打印,某些语句被拆分为几行。
//Inputs:
//partialApp specifies the location of the partial application.
//appName specifies the name of the application.
![[Windows]](../images/windows.gif)
String partialApp = "C:\apps\partial.zip";
![[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 partialApp = "/apps/partial.zip";
String appName = "MyApp";
//Do a get of the administrative client to connect to the product.
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);
}
}
}
下一步做什么
更新应用程序后,请移除侦听器,然后退出。