프로그래밍을 통한 파일 삭제
관리 콘솔, wsadmin 도구 또는 프로그래밍을 통한 기존 애플리케이션에서 파일을 삭제할 수 있습니다. 이 예제를 사용하여 프로그래밍을 통한 파일을 삭제하십시오.
시작하기 전에
WebSphere® Application Server에서 애플리케이션에서 파일을 삭제하려면 먼저 애플리케이션을 설치해야 합니다.
이 태스크 정보
다음 태스크를 수행하여 프로그래밍을 통한 파일을 삭제하십시오.
프로시저
- WebSphere Application Server에 연결하십시오.
- 애플리케이션 관리 프록시를 작성하십시오.
- 이벤트에 나열하기 위한 알림 필터를 작성하십시오.
- 리스너를 추가하십시오.
- 애플리케이션에서 파일을 삭제하십시오.
- 프로그램이 종료되지 않도록 일정 제한시간 동안 대기하십시오.
- JMX(Java Management Extensions) 알림을 청취하여 조작 완료를 파악하십시오.
- 파일이 애플리케이션에서 삭제될 때 리스너를 제거하고 종료하십시오.
결과
예
다음 예제에서는 이전 단계를 기반으로 파일을 삭제하는 방법을 보여줍니다. 일부 구문은 인쇄를 위해 여러 줄로 표시됩니다.
//Inputs:
//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.
//appName specifies the name of the application.
String fileURI = "Increment.jar/com/acme/Foo.class";
String appName = "MyApp";
//Get 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);
//Update the existing application, MyApp, by deleting the file.
Hashtable options = new Hashtable();
options.put (AppConstants.APPDEPL_LOCALE, Locale.getDefault());
options.put (AppConstants.APPUPDATE_CONTENTTYPE, AppConstants.APPUPDATE_CONTENT_FILE);
proxy.updateApplication ( appName,
fileURI,
null,
AppConstants.APPUPDATE_DELETE,
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);
//Once 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);
}
}
}