Forum Discussion
Stéphane_Degli1
Nimbostratus
Dec 14, 2006Event Notification format
Hello,
I need to get a way to disable new sessions to a pool member as result of a not down event.
I begin using the iControl API to write a servlet that will subscribe to member down e...
Stéphane_Degli1
Nimbostratus
Jun 25, 2007Well the code is not very complicate, though my first try must be improved. I used java to acces the iControl API.
You first need to have a subscription script.
I used a HTTP servlet implementing this method :
protected void subscribe() throws java.rmi.RemoteException
{
try
{
m_subscription = (iControl.ManagementEventSubscriptionBindingStub)
new iControl.ManagementEventSubscriptionLocator().getManagementEventSubscriptionPort(new java.net.URL(m_endpoint));
iControl.ManagementEventSubscriptionSubscriptionDetails[] sub_detail = {new iControl.ManagementEventSubscriptionSubscriptionDetails()};
m_subscription.setTimeout(60000);
sub_detail[0].setName("Subscription Nmae");
sub_detail[0].setUrl("Listener's URL");
sub_detail[0].setTtl(60);// Subscription TTL in seconds
sub_detail[0].setMin_events_per_timeslice(10);
sub_detail[0].setMax_timeslice(30);
sub_detail[0].setEnabled_state(CommonEnabledState.fromString("Enabled");
sub_detail[0].setUrl_credentials(new ManagementEventSubscriptionUserCredential(ManagementEventSubscriptionAuthenticationMode.fromString("None"), "","");
String[] evtLst= { /* Events code List */ };
ManagementEventSubscriptionEventType[] evt = new ManagementEventSubscriptionEventType[evtLst.length];
for(int i=0; i{
evt = ManagementEventSubscriptionEventType.fromString(evtLst);
}
sub_detail[0].setEvent_type_list(evt);
ManagementEventSubscriptionSubscriptionStatus[] status = m_subscription.create(sub_detail);
for(int i=0;i{
System.out.println(status.getCode().toString() + " : " + status.getData());
}
}
catch(java.net.MalformedURLException ex)
{
out.println("Invalid F5 url : " + ex.getMessage() + "\n");
}
catch(javax.xml.rpc.ServiceException ex)
{
out.println("Impossible to connect to the Big IP : " + ex.getMessage() + "\n");
}
}
Then you need a SOAP listener. I used Apache Axis 1.4 (it seems 2.0 doesn't work with iControl). And then this servlet as the subscription listener. It simply outputs the notification received. But you may use it to do anything else :
import java.text.*;
import java.util.*;
import java.io.*;
import iControl.*;
public class EventListener extends ManagementEventNotificationBindingStub
{
public EventListener() throws org.apache.axis.AxisFault {
super();
}
public EventListener(java.net.URL endpointURL, javax.xml.rpc.Service service) throws org.apache.axis.AxisFault {
super(endpointURL, service);
}
public EventListener(javax.xml.rpc.Service service) throws org.apache.axis.AxisFault
{
super(service);
}
public void events_occurred(ManagementEventNotificationEventSource event_source, String subscription_id, ManagementEventNotificationEventData[] event_data_list, CommonTimeStamp time_stamp)
{
try
{
// Put some action here.
}
catch(java.rmi.RemoteException ex)
{
System.out.println("Impossible to connect to the Big IP " + ex.getMessage() + "\n");
}
}
HIH
Help guide the future of your DevCentral Community!
What tools do you use to collaborate? (1min - anonymous)Recent Discussions
Related Content
DevCentral Quicklinks
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com
Discover DevCentral Connects
