Update a file through programming
We can update a file for an existing application through the administrative console, the wsadmin tool, or programming. This example describes how to update a file through programming.
Tasks
- Connect to WAS.
- Create the application management proxy.
- Create the notification filter for listening to events.
- Add the listener.
- Update the file in the application.
- Wait for some timeout so that the program does not end.
- Listen to Java Management Extensions (JMX) notifications to understand completion of the operation.
- When the installation completes, remove the listener and quit.
After you successfully run the code, the file is updated for the application.
Example
The following example shows how to add a file to an application based on the previous steps. Some statements are split on multiple lines for printing purposes.
//Inputs: //fileContents specifies the name of the file that we add to the application. //appName specifies the name of the application. //fileURI specifies a URI that gives the target location of the file. The URI // provides the location of the new module after installation. The URI is // relative to the application URL.(Windows)String fileContents = "C:\apps\test.jsp";(Linux) (HPUX) (Solaris) (AIX) (ZOS) (iSeries)String fileContents = "/apps/test.jsp";String appName = "MyApp"; String fileURI = "SomeWebMod.war/com/foo/abc.jsp"; //Get the administrative client to connect to //WAS. 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); Hashtable options = new Hashtable(); options.put (AppConstants.APPDEPL_LOCALE, Locale.getDefault()); options.put (AppConstants.APPUPDATE_CONTENTTYPE, AppConstants.APPUPDATE_CONTENT_FILE); proxy.updateApplication ( appName, fileURI, fileContents, AppConstants.APPUPDATE_UPDATE, options, null); // Wait; the installation 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); } } }
Install an application through programming Uninstall an application through programming Update an application through programming Add to, update, or delete part of an application through programming Prepare a module and adding it to an existing application through programming Prepare and updating a module through programming Deleting a module through programming Add a file through programming Deleting a file through programming