Talk:Java API

From jManage

This is not the right forum for such issues. Please send an email to jmanage-users@lists.sourceforge.net.


When i tried to run the code given in the documentation( java API / adding an application i am getting an exception as shown below. Can anybody help me.


Code :

RemoteServiceContextFactory.setJManageURL( "http://prasanth:9090" ); ServiceContext context = RemoteServiceContextFactory.getServiceContext("admin", "123456", null, null);

ConfigurationService configService = ServiceFactory.getConfigurationService();

        ApplicationConfigData  configData      = new ApplicationConfigData();
        configData.setHost     ( "localhost" );
        configData.setPort     ( new Integer( 1099 ) );
        configData.setName     ( "NewTest" );
        configData.setType     ( "JBOSS" );
        configData.setUsername ( "system" );
        configData.setPassword ( "12345678" );
        
        /* add application */
        configData = configService.addApplication( context, configData );
       System.out.println("ApplicationId:" + configData.getApplicationId());

Exception:

java.lang.RuntimeException: java.lang.reflect.InvocationTargetException

       at org.jmanage.core.remote.server.ServiceCallHandler.execute(ServiceCallHandler.java:75)
       at org.jmanage.webui.servlets.ServiceInvokerServlet.processRequest(ServiceInvokerServlet.java:75)
       at org.jmanage.webui.servlets.ServiceInvokerServlet.doPost(ServiceInvokerServlet.java:55)
       at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
       at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
       at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:358)
       at org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:294)
       at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:567)
       at org.mortbay.http.HttpContext.handle(HttpContext.java:1807)
       at org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:525)
       at org.mortbay.http.HttpContext.handle(HttpContext.java:1757)
       at org.mortbay.http.HttpServer.service(HttpServer.java:879)
       at org.mortbay.http.HttpConnection.service(HttpConnection.java:790)
       at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:961)
       at org.mortbay.http.HttpConnection.handle(HttpConnection.java:807)
       at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:197)
       at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:276)
       at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:511)

Caused by: java.lang.reflect.InvocationTargetException

       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
       at java.lang.reflect.Method.invoke(Unknown Source)
       at org.jmanage.core.remote.server.ServiceCallHandler.executeInternal(ServiceCallHandler.java:100)
       at org.jmanage.core.remote.server.ServiceCallHandler.execute(ServiceCallHandler.java:57)
       ... 17 more

Caused by: java.lang.AssertionError

       at org.jmanage.core.services.ServiceContextImpl.getApplicationConfig(ServiceContextImpl.java:60)
       at org.jmanage.core.services.AccessController.getACLContext(AccessController.java:84)
       at org.jmanage.core.services.AccessController.canAccess(AccessController.java:51)
       at org.jmanage.core.services.AccessController.checkAccess(AccessController.java:68)
       at org.jmanage.core.services.AccessController.checkAccess(AccessController.java:77)
       at org.jmanage.core.services.ConfigurationServiceImpl.addApplication(ConfigurationServiceImpl.java:40)
       ... 23 more

-----------------------
Invoking an operation |
-----------------------

package org.jmanage.core.services; import org.jmanage.core.auth.User; import org.jmanage.core.data.MBeanData; import org.jmanage.core.remote.client.HttpServiceProxy; import org.jmanage.core.data.OperationResultData; import org.jmanage.core.data.AttributeListData; import org.jmanage.core.data.ApplicationConfigData; import org.jmanage.core.management.*; import java.util.*; public class InvokeMethod {

   public InvokeMethod() 
   {
   }
   public static void main(String args[])
   {
       try
       {
            RemoteServiceContextFactory.setJManageURL( "http://localhost:9090" );
            ServiceContext context         = RemoteServiceContextFactory.getServiceContext(
                                                                  "admin", "123456",
                                                                  "prasanth",
                                                                  "jboss.web.deployment:war=Sapp                                                                    hire.war,id=-569298534");
            MBeanService   mbeanService    = ServiceFactory.getMBeanService();
            OperationResultData[] result   = mbeanService.invoke(context,
                                                                   "start", new String[]{});
            /* this is not a cluster, so the number of results must be 1 */
            assert result.length == 1;
            System.out.println( result[0].isError()?"Error": "OK" );
            System.out.println( result[0].getDisplayOutput() );
       
       }catch( Exception e )
       {
           e.printStackTrace();
           return ;
       }
   }

}

Reading an attribute value


Reading an attribute value|


package org.jmanage.core.services;

import org.jmanage.core.auth.User; import org.jmanage.core.data.MBeanData; import org.jmanage.core.remote.client.HttpServiceProxy; import org.jmanage.core.data.OperationResultData; import org.jmanage.core.data.AttributeListData; import org.jmanage.core.data.ApplicationConfigData; import org.jmanage.core.management.*; import java.util.*; public class ReadAttribute {

   static
   {
       ServiceFactory.init(ServiceFactory.MODE_REMOTE);
   }
   /**
    * Set the URL at which jManage is running. This needs to be done
    * before calling a service layer method.
    * @param jmanageURL remote jManage URL, e.g., http://localhost:9090
    */
   public static void setJManageURL(String jmanageURL)
   {
       HttpServiceProxy.setRemoteURL(jmanageURL);
   }
   /**
    * Get a ServiceContext for invoking a Service function.
    * The ServiceContext is built based on the given username,
    * applicationName and the MBean name.
    * @param username      user that will be used for invoking service function
    * @param password      password for the given user
    * @param applicationName   application name (optional)
    * @param mbeanName     MBean name (optional)
    * @return  instance of ServiceContext which can be used to invoke
    *              service layer methods
    */
   public static ServiceContext getServiceContext(String username,
                                                  String password,
                                                  String applicationName,
                                                  String mbeanName)
   {
       ServiceContextImpl context = new ServiceContextImpl();
       
       /* set user */
       User user   = new User(username, null, null, null, 0);
       user.setPlaintextPassword(password);
       context.setUser(user);
       
       /* set application name */
       context.setApplicationName(applicationName);
       /* set mbean name */
       context.setMBeanName(mbeanName);
       return context;
   }
   public static void main(String[] args)
   {
       try
       {
           RemoteServiceContextFactory.setJManageURL( "http://prasanth:9090" );
           ServiceContext         context      =   RemoteServiceContextFactory.getServiceContext(
                                                       "admin", "123456", "raheem","Catalina:type=Server" );
           ConfigurationService   configService=   ServiceFactory.getConfigurationService();
           MBeanService            mbeanService=   ServiceFactory.getMBeanService();
           String              []str       = new String[1];
           str[0]                          = new String("port");
           AttributeListData[] attrData    = null;
           String              appName     = null;
           attrData                        = mbeanService.getAttributes(context, str, true);        
           appName                         = attrData[0].getAppName();
           System.out.println( appName ); 
           List                attrList    = attrData[0].getAttributeList();
           Iterator            iter        = attrList.iterator();
           while( iter.hasNext() )
           {
               ObjectAttribute obj     = ( ObjectAttribute ) iter.next();
               Integer         val     = ( Integer ) obj.getValue();
               System.out.println( val );
           }            
       }catch( Exception e)
       {
           e.printStackTrace();
           return ;
       }
   }

}