Ausnahmebehandlung für Anwendungen mit EJB-Wrapper bei der Migration von Version 5 auf Version 9.0 anpassen

Aufgrund einer Änderung in der JAX-RPC-Spezifikation (Java™ APIs for XML based Remote Procedure Call) können EJB-Anwendungen, die in WebSphere Application Server Version 5.1 noch gepackt werden konnten, in Version 9.0 nur noch dann gepackt werden, wenn Sie den Code für die Ausnahmebehandlung der EJB-Basisanwendung ändern.

Informationen zu diesem Vorgang

Im Wesentlichen sagt die Spezifikation JAX-RPC Version 1.1 Folgendes:
eine servicespezifische Ausnahme, die in einer fernen Methodensignatur deklariert ist, muss eine geprüfte Ausnahme sein. Sie muss eine Erweiterung von java.lang.Exception (direkt oder indirekt), darf aber keine RuntimeException sein.

Eine direkte Verwendung von java.lang.Exception und java.lang.Throwable ist also nicht möglich. Für die Konformität mit der Spezifikation müssen Sie Ihre Anwendungen ändern und servicespezifische Ausnahmen verwenden.

Vorgehensweise

  1. Ändern Sie die Anwendungen, die servicespezifische Ausnahmen verwenden. Angenommen, die vorhandene EJB verwendet eine servicespezifische Ausnahme mit dem Namen UserException. Die UserException enthält ein Feld mit dem Namen ex, das den Typ java.lang.Exception hat. Um Ihre Anwendung mit Web-Services in WebSphere Application Server Version 9.0 verfügbar zu machen, müssen Sie die Klasse UserException ändern. In diesem Beispiel könnten Sie die Klasse UserException so ändern, dass ex den Typ "java.lang.String" anstelle des Typs "java.lang.Exception" erhält.
    new UserException class:
    
    package irwwbase;
    
    /**
     * Beschreibung des Typs hier einfügen
     * Erstellungsdatum: (9/25/00 2:25:18 PM)
     * @author: Administrator
     */
    
    
    public class UserException extends java.lang.Exception {
    
           private java.lang.String _infostring = null;
           private java.lang.String ex;
    /**
     * Kommentar zum Konstruktor für die UserException
     */
    
    public UserException() {
           		 super();
    }
    /**
     * Kommentar zum Konstruktor für die UserException
     */
    public UserException (String infostring)
    {
           _infostring = infostring;
    } // ctor
    /**
     * Beschreibung der Methode hier einfügen
     * Erstellungsdatum: (11/29/2001 9:25:50 AM)
     * @param msg java.lang.String
     * @param ex java.lang.Exception
     */
    public UserException(String msg,String t) {
           super(msg);
           this.setEx(t);
           
           }
           /**
            * @return 
            */
           public java.lang.String get_infostring() {
                  return _infostring;
           }
    
           /**
            * @return 
            */
           public java.lang.String getEx() {
                  return ex;
           }
    
           /**
            * @param string
            */
           public void set_infostring(java.lang.String string) {
                  _infostring = string;
           }
    
           /**
            * @param Exception
            */
           public void setEx(java.lang.String exception) {
                  ex = exception;
           }
           
           public void printStackTrace(java.io.PrintWriter s) {  
             System.out.println("the exception is :"+ex);       
             }
    
    }
  2. Ändern Sie die gesamte Ausnahmebehandlung in den betroffenen Enterprise-Beans. Sie müssen sicherstellen, dass Ihre Enterprise-Beans für die Unterstützung der neuen Ausnahmen codiert sind. In diesem Beispiel könnte der Code wie folgt aussehen:
    new EJB exception handling:
    
    try  {    
          if (isDistributed()) itemCMPEntity = itemCMPEntityHome.findByPrimaryKey(ckey);
          else itemCMPEntityLocal = itemCMPEntityLocalHome.findByPrimaryKey(ckey);
      } catch (Exception ex) {
           System.out.println("%%%%% ERROR: getItemInstance - CMPjdbc " + _className);
           ex.printStackTrace();
           throw new UserException("error on itemCMPEntityHome.findByPrimaryKey(ckey)",ex.getMessage());
       }

Symbol, das den Typ des Artikels anzeigt. Taskartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tejb_migrwrap
Dateiname:tejb_migrwrap.html