hi am using log4j for sateless bean 
i want to all INFO and DEBUG Massage in one file say xx_11.i was able to
write for client part but i am unable to get from Bean in the xx_11. details
of problem is given below
 
 i mention in config file as log4j.appender.A2.File=xx_11
and i declere in Client Catgory as    static Category CAT =
Category.getInstance(Client.class.getName());
and i set PropertyConfigurator as  PropertyConfigurator.configure("
sort.lcf");
when i run this Client i get the out put in xx_11 which is from only Client
and i am unable to get from the Bean
 
my code is 
this
Client  is  
package com.mindtree.emsFramework.dim;

import java.rmi.RemoteException;
import java.util.Collection;
import java.util.Hashtable;
import java.util.Properties;
import java.util.Vector;
import java.util.Iterator;

import javax.ejb.CreateException;
import javax.ejb.DuplicateKeyException;
import javax.ejb.FinderException;
import javax.ejb.ObjectNotFoundException;
import javax.ejb.RemoveException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.rmi.PortableRemoteObject;
import java.util.Enumeration;
import com.mindtree.emsFramework.common.SerializableEmsAlarm;
import com.mindtree.emsFramework.common.SerializableMOInstance;

import org.apache.log4j.PropertyConfigurator;
import org.apache.log4j.Category;
import org.apache.log4j.Priority;
import org.apache.log4j.BasicConfigurator;

public class Client {

        private String url = null;
        private DatabaseLogHome home ;
        private String primarykey = null;
        private String arraylength=null;
        static Category CAT = Category.getInstance(Client.class.getName());
        public Client(String url,String primarykey) throws NamingException {
            this.url= url;
                this.primarykey = primarykey;
        home = lookupHome();
        }

        /**
        * <tt>.Client "t3://localhost:8001" 10020</tt>
        * <p>
        * @param url               URL such as "t3://localhost:7001" of
Server
        */


        public static void main(String[] args) {

        BasicConfigurator.configure();
        System.out.println("\nBeginning dim.Client...\n");
        CAT.info("Populating an array of ");
        Client client = null;

        try {    String name=null;
                if (args[1]==null)
                {usage("sosos");
                CAT.info("SDFDGDF");}
                name=args[1];
                client = new Client(args[0],args[1]);
        } catch (NamingException ne) {
                CAT.info("Unable to look up the beans home: " +
ne.getMessage());
                System.exit(1);
        }
        CAT.info("Populating an array of ");
        Client.init(args[2]);
        try {
                        DatabaseLog ac = client.createDatabaseLog();
                        //SerializableEmsAlarm alarm[] = new
SerializableEmsAlarm[20];
                CAT.info("Finished adding a record");
                String[] s = new String[1];
                String[] y = new String[1];
                s[0] = new String("seqNumber>=1000");
                y[0] = new String("seqNumber desc");
                String t = new String("Or");
         
                        SerializableEmsAlarm[] alarm = ac.queryAlarms(s,y,t);
           
                alarm = ac.queryAlarms(s,y,t);
                        System.out.println("array length = "+alarm.length);
                  
                        for(int i =0; i < alarm.length;i++){
                CAT.info("\n\n\n result of time alarm"+alarm[i].eventTime);
                CAT.info("\n\n\n result of time alarm"+alarm[i].seqNumber);
                System.out.println("\n\n our result" +ac.queryAlarms(s,y,t));
                System.out.println("\n\n our result" +
ac.getSequenceNumber());
            
CAT.info("Populating an array of ");                    
}
                 
           
        CAT.info("Populating an array of DDDDD ");                      
        usage(" There was an exception while creating and using the DAtaB");
        }catch (Exception e) {
        //CAT.info("Populating an array of dfgfjifjdfjgf");
        usage(" There was an exception while creating and using the DAtaB");
        CAT.info("There was an exception while creating and using the
DAtaBasE.");
                CAT.info("This indicates that there was a problem
communicating with " +
                            "the server: "+e);
        }

        System.out.println("\nEnd containerManaged.Client...\n");
        }


   
  
   
   
        private DatabaseLog createDatabaseLog()
        throws CreateException, RemoteException{
            log ("Creating DatabasELog ");
            DatabaseLog ac = (DatabaseLog)PortableRemoteObject.narrow(
            home.create(),DatabaseLog.class);  
                System.out.println("Here");
            int seqNumber =777777;
        short managedObjectClass = 2;
        long eventTime = 1;
        long receivedTime = 1;
        short perceivedSeverity = 1;
        short probableCause = 1;
        short alarmState = 1;
        int dummySpecificProblems[] ={1,1,1};
        String dummyMonitoredAttributes[] = {"a","a","a","a","a","a"};
        String dummyAdditionalInfo[] = { "a","a","a"};
        String dummySourceIdentifier = "zz";
        String dummyObjectIdentifier ="ab";
        

                SerializableMOInstance mo =new
SerializableMOInstance(dummySourceIdentifier,
        dummyObjectIdentifier);
                System.out.println("Here2");
        SerializableEmsAlarm ems= new SerializableEmsAlarm(   
            seqNumber,
        managedObjectClass,
            mo,
                eventTime,
        receivedTime,
        perceivedSeverity,
        probableCause,
        alarmState,
        dummySpecificProblems,
        dummyMonitoredAttributes,
        dummyAdditionalInfo);
           ac.addRecord(ems);  
      return ac;
          
  }

        /**
        * Look up the bean's home interface using JNDI.
        */
        private DatabaseLogHome lookupHome()
    throws NamingException{
    Context ctx = getInitialContext();

    try {
                System.out.println("inside the lookuphome function");
        home = (DatabaseLogHome) ctx.lookup("DatabaseLogHome");
        return home;
    } catch (NamingException ne) {
        log("The client was unable to lookup the EJBHome.  Please make sure "
+
        "that you have deployed the ejb with the JNDI name " +
        "DatabaseLogHome on the WebLogic server at "+url);
        log("Print the message" + ne.getMessage());

        throw ne;
        }
        }

        /**
        * Get an initial context into the JNDI tree.
        *
        * Java2 clients can use the jndi.properties file to set the
        * INITIAL_CONTEXT_FACTORY and the PROVIDER_URL
        * Using a Properties object will work on JDK 1.1.x and Java2
        * clients
        */
        private Context getInitialContext() throws NamingException {

    try {
        // Get an InitialContext
        Properties h = new Properties();
        h.put(Context.INITIAL_CONTEXT_FACTORY,
        "weblogic.jndi.WLInitialContextFactory");
        h.put(Context.PROVIDER_URL, url);
        return new InitialContext(h);
        } catch (NamingException ne) {
                log("We were unable to get a connection to the WebLogic
server at "+url);
                log("Please make sure that the server is running.");
                throw ne;
        }
        }
        
        static
  void usage(String errMsg) {
    System.err.println(errMsg);
    System.err.println("\nUsage: java org.apache.log4j.examples.Mind " +
                       "configFile ARRAY_SIZE\n"+
      "where  configFile is a configuration file\n"+
      "      ARRAY_SIZE is a positive integer.\n");
    System.exit(1);
  }

  static
  void init(String configFile) {
  PropertyConfigurator.configure(configFile);
  }
        private static void log(String s) {
        System.out.println(s);
        }
}

and 

Bean is 

import java.io.PrintWriter;
import java.io.Serializable;
import java.io.StringWriter;
import java.rmi.RemoteException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.PreparedStatement;
import java.util.Enumeration;
import java.util.Vector;
import java.util.StringTokenizer;

import javax.ejb.CreateException;
import javax.ejb.DuplicateKeyException;
import javax.ejb.EJBException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
import javax.ejb.FinderException;
import javax.ejb.NoSuchEntityException;
import javax.ejb.ObjectNotFoundException;
import javax.ejb.RemoveException;
import javax.naming.InitialContext;
import javax.naming.Context;
import javax.naming.NamingException;
import javax.sql.DataSource;
//import javax.sql.*;
//mport java.sql.*;

import com.mindtree.emsFramework.common.DBException;
import com.mindtree.emsFramework.common.SerializableMOInstance;
import com.mindtree.emsFramework.common.SerializableEmsAlarm;
// this is for log4j 

import org.apache.log4j.PropertyConfigurator;
import org.apache.log4j.Category;
import org.apache.log4j.Priority;
import org.apache.log4j.BasicConfigurator;


/**
 * DatabaseLogBean is an Stateless SessionBean. 
 *This bean illustrates:
 * <ul>
 * <li> No persistence of state between calls to the Session Bean
 * <li> Looking up values from the Environment
 * </ul>
 * @version: 1.1 24 April 2001
 * @author : Sobhanadri S Vezzu and Harish Muleva
 */
public class DatabaseLogBean implements SessionBean {
    final static boolean VERBOSE = true;
    private SessionContext ctx;
    private String tableName=null;
    private String demoPool=null;
 //   private String config="sort5.lcf";
  Category CAT = Category.getInstance(DatabaseLogBean.class.getName());
  
    //BasicConfigurator.configure();
    //DatabaseLogBean.init(config);
   /**
   * This method corresponds to the create method in the home interface
   * "DatabaseLogHome.java".
   *  When the client calls
   * <code>DatabaseLogHome.create()</code>, 
   * the container allocates an instance of 
   * the EJBean and calls <code>ejbCreate()</code>.
   *
   * @exception               javax.ejb.CreateException if there is
   *                          a communications or systems failure
   */
   public void ejbCreate() {
       try {
            InitialContext ic = new InitialContext();
            tableName = (String)ic.lookup("java:/comp/env/tableName");
            demoPool = (String)ic.lookup("java:/comp/env/demoPool");
 //         DatabaseLogBean.init(config);
//       BasicConfigurator.configure(); 
       } catch (NamingException ne) {
//                CAT.info("NamingException" + ne);  
                ne.printStackTrace();
              }
      
      }
   
   /**
   * This method is required by the EJB Specification,
   * but is not used by this module.
   *
   */
   public void ejbRemove(){}

   /**
   * This method is required by the EJB Specification,
   * but is not used by this module.
   *
   */
   public void ejbActivate(){}

    /**
   * This method is required by the EJB Specification,
   * but is not used by this module.
   *
   */
   public void ejbPassivate(){}

    /**
   /**
   * Sets the session context.
   *
   * @param ctx               SessionContext Context for session
   */
   public void setSessionContext(SessionContext ctx){
   this.ctx= ctx;
   }

  // Application defined methods
    public void addRecord(SerializableEmsAlarm alarm) throws RemoteException{
                if (alarm == null){
                        return;
                }
         //DatabaseLogBean.init(config);
    CAT.info("IN THE DEBUGE"); 
        InitialContext initCtx = null;
        Connection con = null;
        try{
                    initCtx = new InitialContext();
                DataSource ds = (DataSource)initCtx.lookup(demoPool);
                con=ds.getConnection();
                        PreparedStatement ps = con.prepareStatement(
                                                                "INSERT INTO
" +
                                                                 tableName +
                                                            " (SEQNUMBER,"+
                                " MANAGEDOBJECTCLASS," +
        
"SOURCEIDENTIFIER," + 
                                "OBJECTIDENTIFIER," +
        
"EVENTTIME,RECEIVEDTIME," +
        
"PERCEIVEDSEVERITY," +
        
"PROBABLECAUSE," +
                                                                "ALARMSTATE,"
+
        
"SPECIFICPROBLEMS1," +
        
"SPECIFICPROBLEMS2," +
        
"SPECIFICPROBLEMS3," +
        
"MONITOREDATTRIBUTES1," +
        
"MONITOREDATTRIBUTES2," +
        
"MONITOREDATTRIBUTES3," +
        
"MONITOREDATTRIBUTES4," +
        
"MONITOREDATTRIBUTES5," +
        
"MONITOREDATTRIBUTES6," +
        
"ADDITIONALINFO1," +
        
"ADDITIONALINFO2," +
        
"ADDITIONALINFO3)" +
                        "values
(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
                        ps.setInt(1,alarm.seqNumber);
                        ps.setInt(2,alarm.managedObjectClass);
                        if (alarm.managedObjectInstance.sourceIdentifier ==
null){
                                ps.setString(3,null);
                        } 
                        else{
        
ps.setString(3,alarm.managedObjectInstance.sourceIdentifier);
                        }
                        if (alarm.managedObjectInstance.objectIdentifier ==
null){
                                ps.setString(4,null);
                        } 
                        else{
        
ps.setString(4,alarm.managedObjectInstance.objectIdentifier);
                        }
                        ps.setLong(5,alarm.eventTime);
                        ps.setLong(6,alarm.receivedTime);
                        ps.setInt(7,alarm.perceivedSeverity);
                        ps.setInt(8,alarm.probableCause);
                        ps.setInt(9,alarm.alarmState);
                        int i = 0;
                        for (i = 0; i < alarm.specificProblems.length; i++){
                                ps.setInt(10 + i,alarm.specificProblems[i]);
                        }
                        for (i = alarm.specificProblems.length; i < 3; i++){
                                ps.setInt(10 + i,0);
                        }
                        for (i = 0; i < alarm.monitoredAttributes.length;
i++){
                                if (alarm.monitoredAttributes[i] == null){
                                        ps.setString(13 + i,null);
                                } 
                                else{
                                        ps.setString(13 +
i,alarm.monitoredAttributes[i]);
                                }
                        }

                        for (i = alarm.monitoredAttributes.length; i < 6;
i++){
                                ps.setString(13 + i,null);
                        }

                        for (i = 0; i < alarm.additionalInfo.length; i++){
                                if (alarm.additionalInfo[i] == null){
                                        ps.setString(19 + i,null);
                                } 
                                else{
                                        ps.setString(19 +
i,alarm.additionalInfo[i]);
                                }
                        }
                        for (i = alarm.additionalInfo.length; i < 3; i++){
                                ps.setString(19 + i,null);
                        }
                        i = ps.executeUpdate();
                        if ( i == 0){
                        }
                        con.close();
        }catch(SQLException e){
          e.printStackTrace();
            }catch(NamingException e){
                CAT.info("here \t " + e);
                        e.printStackTrace();        
                }
    }
          
    public SerializableEmsAlarm[] queryAlarms( String[] queryCriteria,
                             String[] sortCriteria,
                                             String indicate_ANDorOR) throws
DBException{
            
         //DatabaseLogBean.init(config);
       CAT.info("IN THE QUERY");
                InitialContext initCtx = null;
                String tableName="currentAlarmLog";
                SerializableEmsAlarm[] alarmsToReturn = null;
                Vector alarmsToReturn_vector = null;
                Connection con = null;
                try{
                    initCtx = new InitialContext();
            usage(" INITIAL CONTAXT");
                DataSource ds = (DataSource)initCtx.lookup(demoPool);
                        con=ds.getConnection();
                        Statement s = con.createStatement();
                
            CAT.info(" INITIAL CONTAXT1");
            usage(" INITIAL CONTAXT");
                // First get a ref for the Statement object.
                s = null;
                ResultSet result = null;
                StringBuffer queryString = new StringBuffer(500);

                // Form the SQL query string
                queryString.append("SELECT * FROM " + tableName + " WHERE ");

                // Form all the conditional criteria
                        for(int index=0; index<queryCriteria.length; index++)
{
                            if(index == queryCriteria.length-1) {
                                queryString.append(queryCriteria[index] );
                        }
                            else {
                             queryString.append(queryCriteria[index] + " " +
        
indicate_ANDorOR + " ");
                            }
                    }

                        // Add the sort criteria to the string.
                        for(int index=0; index<sortCriteria.length; index++)
{
                        if(index==0) {
                            queryString.append(" ORDER BY ");
                        }
                            queryString.append( sortCriteria[index] );
                                if(index != sortCriteria.length-1) {
                            queryString.append(",");
                            }
                     }
                        try {
                        s = con.createStatement();
            CAT.info("Hay create problem");
                        result = s.executeQuery(queryString.toString());

                        // The existing jdbc driver does not support 
                        //scrollable result sets. So have to go the ugly way
of
                        // allocating a vector and then copying into a array.
                        alarmsToReturn_vector = new Vector(20,10);
                        while(result.next()) {
                    SerializableEmsAlarm currentRowAlarm =  
                                                new SerializableEmsAlarm();
                        SerializableMOInstance managedObjectInstance =  
                                                        new
SerializableMOInstance();
                        
                                // Now fill up all the Alarm fields before
inserting
                                // it into the Array.
                                currentRowAlarm.seqNumber =
result.getInt("seqNumber");
                                currentRowAlarm.managedObjectClass = 
        
result.getShort("managedObjectClass");
                currentRowAlarm.managedObjectInstance = 
                                                        new
SerializableMOInstance( 
                                result.getString("sourceIdentifier"),
                            result.getString("objectIdentifier"));
                                currentRowAlarm.eventTime =
result.getLong("eventTime");
                                currentRowAlarm.receivedTime =
result.getLong("receivedTime");
                                currentRowAlarm.perceivedSeverity = 
        
result.getShort("perceivedSeverity");
                                currentRowAlarm.probableCause = 
        
result.getShort("probableCause");
                                currentRowAlarm.alarmState =
result.getShort("alarmState");
              
                CAT.info("Resuls are desplays");
                // Fill up the Array members now.
                                int[] specificProblems = new int[3];
                                specificProblems[0]=
result.getInt("specificProblems1");
                                specificProblems[1]=
result.getInt("specificProblems2");
                                specificProblems[2]=
result.getInt("specificProblems3");
                        currentRowAlarm.specificProblems = specificProblems;

                        // Fill up the monitoredAttributes field.
                        String[] monitoredAttributes = new String[6];
                                monitoredAttributes[0]= 
        
result.getString("monitoredAttributes1");
                                monitoredAttributes[1]= 
        
result.getString("monitoredAttributes2");
                                monitoredAttributes[2]= 
        
result.getString("monitoredAttributes3");
                                monitoredAttributes[3]= 
        
result.getString("monitoredAttributes4");
                                monitoredAttributes[4]= 
        
result.getString("monitoredAttributes5");
                                monitoredAttributes[5]= 
        
result.getString("monitoredAttributes6");
                        currentRowAlarm.monitoredAttributes =
monitoredAttributes;

                        // Fill up the additional info field.
                        String[] additionalInfo = new String[3];
                                additionalInfo[0]=
result.getString("additionalInfo1");
                                additionalInfo[1]=
result.getString("additionalInfo2");
                                additionalInfo[2]=
result.getString("additionalInfo3");
                        currentRowAlarm.additionalInfo = additionalInfo;
                                alarmsToReturn_vector.add(currentRowAlarm);
                        }
                }
        
                catch(SQLException e) {
                    StringWriter sw = new StringWriter();
                        PrintWriter pw = new PrintWriter(sw);
                        e.printStackTrace(pw);
                        throw new DBException(-1,
                                                "SQLException in AlarmLog in
queryAlarms(). " + 
        
e.getMessage(),sw.toString());
                }

                int noOfAlarms = alarmsToReturn_vector.size();
                alarmsToReturn = new SerializableEmsAlarm[noOfAlarms];

                for(int i=0; i<noOfAlarms; i++) {
                    alarmsToReturn[i] = 
        
(SerializableEmsAlarm)alarmsToReturn_vector.get(i);
                }
                
                //close connection
                con.close();
                
        }catch(SQLException sq){
        } catch(NamingException ne) {

                CAT.info("Error closing context: " + ne);
                usage("Error closing context: " + ne);
                log("Error closing context: " + ne);
     }
          finally {
          try {
              if(initCtx != null) initCtx.close();
                  if(con!= null) con.close();
          }catch(NamingException ne) {
                        log("Error closing context: " + ne);
                        throw new EJBException(ne);
                  }catch(SQLException sq){
                   }
          }
        return alarmsToReturn;
    } 

        public long getSequenceNumber() throws DBException{
         //DatabaseLogBean.init(config);
        
            InitialContext initCtx = null;
                Connection con = null;
                long nextseqnum = 0;
                try{
                    initCtx = new InitialContext();
                DataSource ds = (DataSource)initCtx.lookup(demoPool);
                con=ds.getConnection();
                        Statement s = con.createStatement();
                ResultSet result = null;
                // Form the SQL query string
                String sqlquery = new String(
                                                "SELECT max(seqNumber) FROM "
+ tableName);
                        result = s.executeQuery(sqlquery);
                        while (result.next()){
                                nextseqnum = result.getLong(1);
                        }
                    con.close();
            }catch(SQLException e){
                 e.printStackTrace();           
                                                 
        }catch(NamingException e) {
             e.printStackTrace();       
        }
        finally {
            try {
                if(initCtx != null) initCtx.close();
                if(con!= null) con.close();
             }catch(NamingException e) {
              e.printStackTrace();    
                         }catch(SQLException e){
                         e.printStackTrace();
             }
           }
           return (nextseqnum + 1); 
    }
    
    //print string 
    private void log(String s) {
    if (VERBOSE) System.out.println(s);
    }
    static void usage(String errMsg) {
    System.err.println(errMsg);
    System.err.println("\nUsage: java org.apache.log4j.examples.Mind " +
                       "configFile ARRAY_SIZE\n"+
      "where  configFile is a configuration file\n"+
      "      ARRAY_SIZE is a positive integer.\n");
    System.exit(1);
    }

    static void init(String configFile) {
    PropertyConfigurator.configure(configFile);
    }
}

thanx 
Harish














Reply via email to