Disabling/Enabling the Oracle Service Bus Services from Java
The status of the OSB services can be changed in different ways
like through OSB console, through WLST script and through Java.
This post shows how to use the Java API to enable/disable
the OSB Proxy/Business services.
Java Code:
package osbservicestatusupdate;
import com.bea.wli.config.Ref;
import com.bea.wli.sb.management.configuration.*;
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.Hashtable;
import javax.management.*;
import javax.management.remote.*;
import javax.naming.Context;
import weblogic.management.jmx.MBeanServerInvocationHandler;
import weblogic.management.mbeanservers.domainruntime.DomainRuntimeServiceMBean;
public class OSBServiceStatusUpdate {
private static
JMXConnector initConnection(String hostname, int port,String username, String
password) throws IOException,MalformedURLException
{
JMXServiceURL
serviceURL = new JMXServiceURL("t3", hostname,
port,"/jndi/" + DomainRuntimeServiceMBean.MBEANSERVER_JNDI_NAME);
Hashtable<String, String> h = new Hashtable<String,
String>();
h.put(Context.SECURITY_PRINCIPAL, username);
h.put(Context.SECURITY_CREDENTIALS, password);
h.put(JMXConnectorFactory.PROTOCOL_PROVIDER_PACKAGES,
"weblogic.management.remote");
return
JMXConnectorFactory.connect(serviceURL, h);
}
private static Ref
constructRef(String refType,String serviceuri){
Ref ref =
null;
String[]
uriData = serviceuri.split("/");
ref = new
Ref(refType,uriData);
return ref;
}
public static
String changeProxyServiceStatus(String servicetype,boolean status,String
serviceURI,String host,int port,String username,String password){
JMXConnector
conn = null;
SessionManagementMBean sm = null;
String
sessionName = "mysession";
String
statusmsg="";
try{
conn =
initConnection(host, port, username,password);
MBeanServerConnection mbconn = conn.getMBeanServerConnection();
DomainRuntimeServiceMBean domainService = (DomainRuntimeServiceMBean)
MBeanServerInvocationHandler.
newProxyInstance(mbconn,
new ObjectName(DomainRuntimeServiceMBean.OBJECT_NAME));
sm =
(SessionManagementMBean)
domainService.findService(SessionManagementMBean.NAME,SessionManagementMBean.TYPE,
null);
sm.createSession(sessionName);
ALSBConfigurationMBean alsbSession = (ALSBConfigurationMBean)
domainService.
findService(ALSBConfigurationMBean.NAME + "." +
"mysession",ALSBConfigurationMBean.TYPE, null);
if(servicetype.equals("ProxyService")) {
Ref
ref = constructRef("ProxyService",serviceURI);
ProxyServiceConfigurationMBean proxyConfigMBean =
(ProxyServiceConfigurationMBean) domainService.
findService(ProxyServiceConfigurationMBean.NAME
+ "." + sessionName,ProxyServiceConfigurationMBean.TYPE, null);
if(status){
proxyConfigMBean.enableService(ref);
statusmsg="Enabled the Service : " + serviceURI;
}
else
{
proxyConfigMBean.disableService(ref);
statusmsg="Disabled the Service : " + serviceURI;
}
}else
if(servicetype.equals("BusinessService")) {
Ref
ref = constructRef("BusinessService",serviceURI);
BusinessServiceConfigurationMBean businessConfigMBean =
(BusinessServiceConfigurationMBean) domainService.
findService(BusinessServiceConfigurationMBean.NAME + "." +
sessionName,BusinessServiceConfigurationMBean.TYPE, null);
if(status){
businessConfigMBean.enableService(ref);
statusmsg="Enabled the Service : " + serviceURI;
}
else
{
businessConfigMBean.disableService(ref);
statusmsg="Disabled the Service : " + serviceURI;
}
}
sm.activateSession(sessionName, statusmsg);
conn.close();
}catch(Exception ex){
if(null !=
sm) {
try{
sm.discardSession(sessionName);
}catch(Exception e) {
System.out.println("able to discard the session");
}
}
statusmsg="Not able to perform the operation";
ex.printStackTrace();
}finally{
if(null !=
conn)
try{
conn.close();
}catch(Exception e) {
e.printStackTrace();
}
}
return
statusmsg;
}
public static void
main(String[] args) {
//changeProxyServiceStatus(servicetype, status, serviceURI, host, port,
username, password)
System.out.println(changeProxyServiceStatus("BusinessService",
false, "OSBServiceAPI/OSBServiceAPIBusiness", "localhost",
8000, "weblogic", "welcome1"));
}
}
The below specified jar files should be in the class path to
execute this program.
O/P
Hi,
ReplyDeleteIs there a way we can enable and disable a proxy when Admin server is unavailable ?
I tried above script but it is dependent on Admin server to be up and running else it does not work.
Great contribution!!! Thx a lot
ReplyDeleteLadislav
thanks a lot .. great post
ReplyDeletethank you!
ReplyDeleteThats a real nice article... Works perfectly...
ReplyDeleteHi Albin ,
ReplyDeleteI have plain java code which connects to JMS queue , gets token and published data.
How do i need to use the plain java code in OSB ?
Thanks,
VB
This comment has been removed by the author.
ReplyDelete