IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Websphere Java Discussion :

Reponse à : Jython/Jacl script to manipulate FEM (Failed Event Manager)


Sujet :

Websphere Java

  1. #1
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut Reponse à : Jython/Jacl script to manipulate FEM (Failed Event Manager)
    Bonjour j'ai eu à résoudre cette question qui est très mal documenté. la question à été posté sur les forum d'IBM :
    http://www.ibm.com/developerworks/fo...ageID=14439471

    n'ay pas de réponse je m'y suis mis et voila le résultat

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    def getFailedEventManager():
      objstr = AdminControl.completeObjectName('WebSphere:*,type=FailedEventManager')
      return objstr
     
    def getJmxFailedEventManager(mgrName):
      jmxFeMgr = AdminControl.makeObjectName(mgrName)
      return jmxFeMgr
     
    def getAllFailedEventCount():
      totalFailedEventCount = AdminControl.invoke(mgrName,'getFailedEventCount')
      print "Total Failed Event Count: " , totalFailedEventCount
      return totalFailedEventCount
     
    def getAllFailedEvents():
      msglist = AdminControl.invoke_jmx(jmxFeMgr,'getAllFailedEvents',[0],['int'])
      return msglist
     
    def getFEListByModule(sourceModuleName):
      sourceComponentName="*"
      pagesize=0
      msglist = AdminControl.invoke_jmx(jmxFeMgr,'getFailedEventsForSource',[sourceModuleName,sourceComponentName,0],['java.lang.String','java.lang.String','int'])
      return msglist
     
    def printFailedEvents(msglist):
      i=0
      for fe in msglist:
        i+=1
        print i, fe.getMsgId(), fe.getType(), fe.getFailureDateTime(), fe.getSourceModuleName()
     
     
    def printFailedEventDetails(messageId):
      fep=AdminControl.invoke_jmx(jmxFeMgr,'getFailedEventWithParameters',[messageId],['java.lang.String'])
      print "MessageID: " , messageId
      print "FailureDateTime: " , fep.getFailureDateTime()
      print "Failure Message: " , fep.getFailureMessage()
     
    def resubmitFailedEvent(messageId):
      msglist = getAllFailedEvents()
      from java.util import ArrayList
      msgIdList = ArrayList()
      for fe in msglist:
        if (messageId == fe.getMsgId()):
          print "resubmitFailedEvent: ", fe.getMsgId()
          msgIdList.add(fe)
          resubmitFailedEventsList(msgIdList)
     
    def resubmitFailedEventsList(msgIdList):
      AdminControl.invoke_jmx(jmxFeMgr,'resubmitFailedEvents',[msgIdList],['java.util.List'])
     
    def discardFailedEvent(messageId):
      msglist = getAllFailedEvents()
      from java.util import ArrayList
      msgIdList = ArrayList()
      for fe in msglist:
        if (messageId == fe.getMsgId()):
          print "discardFailedEvent: ", fe.getMsgId()
          msgIdList.add(fe)
          discardFailedEventsList(msgIdList)
     
    def discardFailedEventsList(msgIdList):
      AdminControl.invoke_jmx(jmxFeMgr,'discardFailedEvents',[msgIdList],['java.util.List'])
     
    def manageFailedEvents(sourceModuleName):
      if ('' == sourceModuleName):
        msglist=getAllFailedEvents()
      else:
        msglist=getFEListByModule(sourceModuleName)
      i=msglist.size()
      while (i >0):
        i-=1
        fe = msglist.get(i)
        print '******************************************************'
        print i, fe.getMsgId(), fe.getType(), '[', fe.getFailureDateTime(), ']', fe.getSourceModuleName()
        value = raw_input("Afficher les details 'D'\nRejouer              'R'\nSupprimer            'S'\nIgnorer              'I'\n")
        if ('D' == value or 'd' == value):
          printFailedEventDetails(fe.getMsgId())
          value = raw_input("Rejouer              'R'\nSupprimer            'S'\nIgnorer              'I'\n")
        if ('R' == value or 'r' == value):
          resubmitFailedEvent(fe.getMsgId())
        if ('S' == value or 's' == value):
          discardFailedEvent(fe.getMsgId())
    use :
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    >mgrName = getFailedEventManager()
    >jmxFeMgr = getJmxFailedEventManager(mgrName)
     
    >sourceModuleName="My_Module_Name"
    >msglist = getFEListByModule(sourceModuleName)
    >printFailedEvents(msglist)
    1 881200D7A32112DE_39500172 SCA Wed Jun 22 16:00:32 CEST 2011 My_Module_Name
    2 881200D7A32112DE_39500180 SCA Wed Jun 22 16:00:21 CEST 2011 My_Module_Name
    3 881200D7A32112DE_39500174 SCA Wed Jun 22 16:00:01 CEST 2011 My_Module_Name
    4 881200D7A32112DE_39500224 SCA Wed Jun 22 15:19:41 CEST 2011 My_Module_Name
    5 881200D7A32112DE_39500554 SCA Wed Jun 22 15:19:36 CEST 2011 My_Module_Name
    6 881200D7A32112DE_39500552 SCA Wed Jun 22 15:19:32 CEST 2011 My_Module_Name
    7 881200D7A32112DE_38000237 SCA Wed Jun 22 14:28:52 CEST 2011 My_Module_Name
    8 881200D7A32112DE_39500102 SCA Tue Feb 15 10:09:31 CET 2011 My_Module_Name
    9 881200D7A32112DE_39500100 SCA Tue Feb 15 10:09:26 CET 2011 My_Module_Name
    10 881200D7A32112DE_39500098 SCA Tue Feb 15 10:09:16 CET 2011 My_Module_Name
    11 881200D7A32112DE_39500096 SCA Tue Feb 15 10:09:08 CET 2011 My_Module_Name
    12 881200D7A32112DE_39500094 SCA Tue Feb 15 10:09:01 CET 2011 My_Module_Name
    13 881200D7A32112DE_39500092 SCA Tue Feb 15 10:08:59 CET 2011 My_Module_Name
    14 881200D7A32112DE_39000856 SCA Tue Dec 21 14:56:24 CET 2010 My_Module_Name
    15 881200D7A32112DE_39000853 SCA Tue Dec 21 14:56:18 CET 2010 My_Module_Name
    16 881200D7A32112DE_38500061 SCA Mon Dec 06 10:33:44 CET 2010 My_Module_Name
    17 881200D7A32112DE_38000153 SCA Mon Dec 06 10:30:17 CET 2010 My_Module_Name
    18 881200D7A32112DE_38000158 SCA Mon Dec 06 10:30:16 CET 2010 My_Module_Name
    19 881200D7A32112DE_38000231 SCA Mon Dec 06 10:30:03 CET 2010 My_Module_Name
    20 881200D7A32112DE_38000250 SCA Mon Dec 06 10:29:27 CET 2010 My_Module_Name
    21 881200D7A32112DE_38000254 SCA Mon Dec 06 10:29:27 CET 2010 My_Module_Name
    22 881200D7A32112DE_38000257 SCA Mon Dec 06 10:29:26 CET 2010 My_Module_Name
    23 881200D7A32112DE_38000282 SCA Mon Dec 06 10:29:26 CET 2010 My_Module_Name
     
    >manageFailedEvents(sourceModuleName)
    ******************************************************
    22 881200D7A32112DE_38000282 SCA [ Mon Dec 06 10:29:26 CET 2010 ] My_Module_Name
    Afficher les details 'D'
    Rejouer              'R'
    Supprimer            'S'
    Ignorer              'I'
    D
    MessageID:  881200D7A32112DE_38000282
    FailureDateTime:  Mon Dec 06 10:29:26 CET 2010
    Failure Message:  com.ibm.websphere.sca.ServiceRuntimeException: caused by: com.aphp.eai.exceptions.APException: Erreur lors de l'appel au Controller
    com.ibm.wsspi.sca.async.bean.impl.ServiceSIBusMessageBean.processMessage(ServiceSIBusMessageBean.java:331)
    com.ibm.wsspi.sca.async.bean.impl.ServiceSIBusMessageBean.access$000(ServiceSIBusMessageBean.java:56)
    com.ibm.wsspi.sca.async.bean.impl.ServiceSIBusMessageBean$1.onMessage(ServiceSIBusMessageBean.java:81)
    com.ibm.wbiserver.manualrecovery.ejb.RecoveryMDBHandler.processMessage(RecoveryMDBHandler.java:126)
    com.ibm.wbiserver.manualrecovery.ejb.RecoveryMDBHandler.onMessage(RecoveryMDBHandler.java:82)
    com.ibm.wsspi.sca.async.bean.impl.ServiceSIBusMessageBean.onMessage(ServiceSIBusMessageBean.java:122)
    sun.reflect.GeneratedMethodAccessor113.invoke(Unknown Source)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    java.lang.reflect.Method.invoke(Method.java:585)
    com.ibm.ejs.container.MessageEndpointHandler.invokeMdbMethod(MessageEndpointHandler.java:1018)
    com.ibm.ejs.container.MessageEndpointHandler.invoke(MessageEndpointHandler.java:747)
    $Proxy19.onMessage(Unknown Source)
    com.ibm.ws.sib.ra.inbound.impl.SibRaEndpointInvokerImpl.invokeEndpoint(SibRaEndpointInvokerImpl.java:156)
    com.ibm.ws.sib.ra.inbound.impl.SibRaDispatcher.dispatch(SibRaDispatcher.java:780)
    com.ibm.ws.sib.ra.inbound.impl.SibRaSingleProcessListener$SibRaWork.run(SibRaSingleProcessListener.java:586)
    com.ibm.ejs.j2c.work.WorkProxy.run(WorkProxy.java:419)
    com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1497)
    Caused by: com.aphp.eai.exceptions.APHPException: Erreur lors de l'appel au Controller
    Rejouer              'R'
    Supprimer            'S'
    Ignorer              'I'
    R
    resubmitFailedEvent:  881200D7A32112DE_38000282
    A+JYT

  2. #2
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    une petite amélioration
    et une réécriture POO
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    from java.util import ArrayList
     
    ###################################################################################################
    class FailedEvent:
      def __init__(self, mgr, event):
        self.mgr = mgr
        self.event = event
      # toString
      def toString(self):
        return self.event.getMsgId() + ' ' + self.event.getType() + ' [' + self.event.getFailureDateTime().toString() + '] ' + self.event.getSourceModuleName()
      # printDetails
      def printDetails(self):
        fep = self.mgr.jmx.getEventDetailForSCA(self.event)
        print "MessageID: " , self.event.getMsgId()
        print "FailureDateTime: " , fep.getFailureDateTime()
        print "Failure Message: " , fep.getFailureMessage()
      # resubmit
      def resubmit(self):
        msgIdList = FailedEventList(self.mgr, '')
        print "resubmitFailedEvent: ", self.event.getMsgId()
        msgIdList.add(self.event)
        msgIdList.resubmit()
      # discard
      def discard(self):
        msgIdList = FailedEventList(self.mgr, '')
        print "discardFailedEvent: ", self.event.getMsgId()
        msgIdList.add(self.event)
        msgIdList.discard()
     
     
    ###################################################################################################
    class FailedEventList:
      def __init__(self, mgr, eList):
        self.mgr = mgr
        if ('' == eList):
          eList = ArrayList()
        self.list = eList
      # add
      def add(self, event):
        self.list.add(event)
      # size
      def size(self):
        return self.list.size()
      # get
      def get(self, id):
        return FailedEvent(self.mgr, self.list.get(id))
      # print
      def print(self):
        i=0
        for fe in self.list:
          i+=1
          event = FailedEvent(self.mgr, fe)
          print i, event.toString()
      # resubmit
      def resubmit(self):
        self.mgr.jmx.resubmitFailedEvents(self.list)
      # discare
      def discard(self):
        self.mgr.jmx.discardFailedEvents(self.list)
      #manage
      def manage(self):
        i=self.size()
        print "You have to manage", i, "event(s)"
        while (i >0):
          i-=1
          fe = self.get(i)
          print '******************************************************'
          print i, fe.toString()
          value = raw_input("(S)how details (R)submit (D)iscare (I)gnore :")
          if ('S' == value or 's' == value):
            fe.printDetails()
            value = raw_input("(R)submit (D)iscare (I)gnore :")
          if ('R' == value or 'r' == value):
            fe.resubmit()
          if ('D' == value or 'd' == value):
            fe.discard( )
          if ('Q' == value or 'q' == value):
            return
     
    ###################################################################################################
    class FailedEventJmx:
      def __init__(self):
        self.name = AdminControl.completeObjectName('WebSphere:*,type=FailedEventManager')
        self.jmx = AdminControl.makeObjectName(self.name)
      # getFailedEventCount
      def getFailedEventCount(self):
        return AdminControl.invoke(self.name,'getFailedEventCount')
      # getAllFailedEvents
      def getAllFailedEvents(self):
        return AdminControl.invoke_jmx(self.jmx,'getAllFailedEvents',[0],['int'])
      # getFailedEventsForSource
      def getFailedEventsForSource(self, sourceModuleName, sourceComponentName):
        return AdminControl.invoke_jmx(self.jmx,'getFailedEventsForSource',[sourceModuleName,sourceComponentName,0],['java.lang.String','java.lang.String','int'])
      # resubmitFailedEvents
      def resubmitFailedEvents(self, feList):
        AdminControl.invoke_jmx(self.jmx,'resubmitFailedEvents',[feList],['java.util.List'])
      # discardFailedEvents
      def discardFailedEvents(self, feList):
        AdminControl.invoke_jmx(self.jmx,'discardFailedEvents',[feList],['java.util.List'])
      # getFailedEventWithParameters
      def getFailedEventWithParameters(self, msgId):
        return AdminControl.invoke_jmx(self.jmx,'getFailedEventWithParameters',[msgId],['java.lang.String'])
      # getEventDetailForSCA
      def getEventDetailForSCA(self, msg):
        return AdminControl.invoke_jmx(self.jmx,'getEventDetailForSCA',[msg],['com.ibm.wbiserver.manualrecovery.FailedEvent'])
     
    ###################################################################################################
    class FailedEventManager:
      def __init__(self):
        self.jmx = FailedEventJmx()
      # getAllFailedEventCount
      def getAllFailedEventCount(self):
        totalFailedEventCount = self.jmx.getFailedEventCount()
        print "Total Failed Event Count: " , totalFailedEventCount
        return totalFailedEventCount
      # getAllFailedEvents
      def getAllFailedEvents(self):
        msglist = self.jmx.getAllFailedEvents()
        return FailedEventList(self, msglist)
      # getFEListByModule
      def getFEListByModule(self, sourceModuleName):
        sourceComponentName="*"
        msglist = self.jmx.getFailedEventsForSource(sourceModuleName, sourceComponentName)
        return FailedEventList(self, msglist)
      # getModules
      def getModules(self):
        eList = ArrayList()
        msglist = self.jmx.getAllFailedEvents()
        for fe in msglist:
          if fe.getSourceModuleName() in eList:
            pass
          else:
            eList.add(fe.getSourceModuleName())
        return eList
     
    ###################################################################################################
    class Main:
      def __init__(self):
        self.fem = FailedEventManager()
      # run
      def run(self):
        self.modules = self.fem.getModules()
        self.printModules()
        value = 'continue'
        while ('Q' != value and 'q' != value):
          value = raw_input("Enter module name to manage or empty for all modules:\n(Q) to quit\n(R) to reload modules list\n")
          #print('==>' + value + '<==')
          if ('Q' == value or 'q' == value):
            print ('Bye')
          else:
            if ('R' == value or 'r' == value):
              self.modules = self.fem.getModules()
              self.printModules()
            else:
              self.manageModule(value)
              self.printModules()
      # printModules
      def printModules(self):
        if (0 == self.modules.size()):
          print('No failed events on your system')
        else:
          print('Failed events in modules:')
          for module in self.modules :
            print module
      # manageModule
      def manageModule(self, modulename):
        if ('' == modulename):
          print('manage all modules')
          msglist=self.fem.getAllFailedEvents()
          msglist.manage()
        else:
          if (-1 == self.modules.indexOf(modulename)):
            print ('module not found')
          else:
            msglist=self.fem.getFEListByModule(modulename)
            msglist.manage()
     
    #-----------------------------------------------------------------------------
    # Main
    #-----------------------------------------------------------------------------
    def main():
      m=Main()
      m.run()
     
    main()
    A+JYT

Discussions similaires

  1. Script pour manipuler une chaine d'un nom de fichier
    Par mond14 dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 23/05/2013, 20h37
  2. Réponses: 0
    Dernier message: 13/03/2009, 21h21
  3. Réponses: 2
    Dernier message: 25/03/2008, 14h24
  4. [JACL] script de configuration WAS 5.1
    Par screenvlf dans le forum Websphere
    Réponses: 2
    Dernier message: 12/04/2007, 11h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo