Fehler InitialContext.lookup

Q

Quaigon97

Gast
Hallo Community...

Eine Anwendung auf Websphere wirft als Root Caus folgenden Stacktrace
Java:
Caused by: java.lang.ArrayIndexOutOfBoundsException
         at java.lang.String.getChars(String.java:666)
         at java.lang.StringBuilder.append(StringBuilder.java:207)
         at javax.naming.spi.NamingManager.getURLContext(NamingManager.java:646)
         at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:422)
         at javax.naming.InitialContext.lookup(InitialContext.java:436)

Der Betreffende Code ist folgender:

at javax.naming.spi.NamingManager.getURLContext(NamingManager.java:646)
Java:
        // obtain pkg prefixes from hashtable
        String pkgPrefixes[] = EnvironmentReader
                .getFactoryNamesFromEnvironmentAndProviderResource(envmt, null,
                        Context.URL_PKG_PREFIXES);

        for (String element : pkgPrefixes) {			<--- 646
            // create factory instance
            ObjectFactory factory;

Ich bin Ratlos.... Wie um alles in der Welt kann man diesen Fehler provozieren ....

Danke für Hilfe
 
Zuletzt bearbeitet von einem Moderator:
S

SlaterB

Gast
der Code passt nicht zur Fehlermeldung, deine Angabe zur Zeile 646 ist zu bezweifeln,


so wie dein Quellcode aussieht, hast du aber tatsächlich irgendwas wie lookup() in irgendeiner Registry drin,
du musst nur die richtige Zeile finden,
ist der StackTrace noch länger?

wenn du bei der richtigen Zeile bist, dann übergibst du dort ja sicher irgendeinen String, eine URL,
pkgPrefixes-Elemente klingen schon verdächtig, was passiert mit denen innerhalb der Schleife?

dieser Übergabeparameter ist offensichtlich für die Verarbeitung ungeeignet, schaue ihn dir an, läßt sich vielleicht direkt erkennen,
schaue dir andere funktionierende Aufrufe an,
lösche/ vergiss notfalls vorerst dein Programm und wende die Tutorials zu die erklären was so ein lookup() sein soll,
welche Parameter geeignet sind usw.

wenn du meinst, das Prinzip zu verstehen, und dennoch nicht verstehst, warum ein bestimmter String X nicht akzeptiert wird,
dann poste diesen String hier und deine Vermutungen, warum es gehen sollte,
poste z.B. ähnliche Strings die funktionieren
 
Q

Quaigon97

Gast
Hallo,

Der Komplette Code ist folgender....

Java:
  /**
     * Creates a URL <code>Context</code> which can subsequently be used to
     * resolve any URLs with the URL scheme s. A <code>URLContextFactory</code>
     * is a type of <code>ObjectFactory</code> used to create a
     * <code>URLContext</code> when <code>getObjectInstance</code> is
     * invoked with the <code>Object o</code> set to null (see the description
     * of <code>ObjectFactory</code>).
     * <p>
     * This <code>getURLContext</code> method tries to locate the
     * <code>URLContextFactory</code> based on the
     * <code>Context.URL_PKG_PREFIXES</code> property which contains the
     * prefixes to be tried as the start of the package name. (See
     * <code>Context</code>).
     * </p>
     * <p>
     * Each package prefix entry (and finally the default value) are tried to
     * find the class which can be used to create the Context.
     * </p>
     * <p>
     * A full class name is derived as
     * <code>packageprefix.s.sURLContextFactory</code> where <code>s</code>
     * is the scheme.
     * </p>
     * <p>
     * For example if a scheme is abc and the package prefix to try is com.ibm
     * then the factory class to try is
     * <code>com.ibm.abc.abcURLContextFactory</code>. Once a factory is
     * created then a <code>Context</code> is created using the special use of
     * <code>ObjectFactory.getObjectInstance</code>.
     * </p>
     * <p>
     * Once a first factory is created, it is used to create the context, and NO
     * further attempts will be made on other pkg prefixes.
     * </p>
     * 
     * @param schema
     *            the URL scheme to which the Context will relate
     * @param envmt
     *            a <code>Hashtable</code> containing environment properties
     *            and values - may be null
     * @return the URL <code>Context</code> or null if no
     *         <code>URLContextFactory</code> instance can be created and
     *         therefore a Context cannot be created.
     * @throws NamingException
     *             if one is encountered.
     */
    public static Context getURLContext(String schema, Hashtable<?, ?> envmt)
            throws NamingException {

        if (null == schema || 0 == schema.length() || null == envmt) {
            return null;
        }

        // obtain pkg prefixes from hashtable
        String pkgPrefixes[] = EnvironmentReader
                .getFactoryNamesFromEnvironmentAndProviderResource(envmt, null,
                        Context.URL_PKG_PREFIXES);

        for (String element : pkgPrefixes) {
            // create factory instance
            ObjectFactory factory;
            String clsName = element + "." //$NON-NLS-1$
                    + schema + "." //$NON-NLS-1$
                    + schema + "URLContextFactory"; //$NON-NLS-1$

            factory = (ObjectFactory) factoryForName(clsName);
            if (null == factory) {
                continue;
            }
            
            try {
                // create url context using the factory, and return it
                return (Context) factory.getObjectInstance(null, null, null,
                        envmt);
            } catch (NamingException e) {
                // find NamingException, throw it
                throw e;
            } catch (Exception e) {
                // other exception, throw as NamingException
                // jndi.22=other exception happens: {0}
                NamingException nex = new NamingException(Messages.getString(
                        "jndi.22", e.toString())); //$NON-NLS-1$
                nex.setRootCause(e);
                throw nex;
            }
        }

        // cannot create context instance from any pkg prefixes, return null
        return null;
    }

zu finden in der IBM Websphere Runtime 7.0.0.15 jndi.jar

Der eigentliche Auslösende Code ist InitialContext.lookup(String) also ein normaler JNDI lookup.

Die Zeilennummer sind dem beiligenen SourceCode entnommen.

Das Pronziep des zugrundliegenen JNDI Lookups ist mir dabei durchaus klar, ich versuche nur zu verstehen wie ein JNDI Lookup mit diesem Stacktrace enden kann.

Die zugrundeliegene RessourceUrl habe ich leider nicht, da der Fehler nur ca alle 3 Wochen ein einziges Mal auftritt. Ich kann den Fehler nicht mal bewusst reproduzieren. Alles was ich habe ist dieser Stacktrace oder folgende Fehlermeldung:
Code:
cannot find the factory for this scheme: ejblocal
die aber in irgendeiner weise zusammen hängen.

Das einzige was mir an dieser stelle nicht klar ist, ist in welchem Zustand der jndi Namensraum sein muss, bzw mit was der lookup erfolgen muss um diesen Zustand/Stacktrace zu erzeugen.
 
Q

Quaigon97

Gast
der Code passt nicht zur Fehlermeldung, deine Angabe zur Zeile 646 ist zu bezweifeln,

Nur um das ganze sinvoll abzuschließen, die Zeilennummer ist Korrekt und die Lösung des Problems ist folgende:

IBM IZ78413: JIT-COMPILED STRING.GETCHARS THROWS UNEXPECTED ARRAYINDEXOUTOFBO UNDSEXCEPTION - United States

Anscheinend gibt es einen noch nicht ganz gelösten BUG im JIT des IBM JDKs der genau zu diesem effekt führt, eine ArrayIndexOutOfBoundsException innerhalb einer foreach definition.

Manchmal liebe ich java ;-)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Fehler wegen Rest-Schnittstelle Allgemeines EE 4
A JPA Fehler beim JPA-Projekt Allgemeines EE 12
pkm "Unable to cache bundle"-Fehler bei Apache Karaf Allgemeines EE 0
H JWebUnit Fehler: java.lang.NoClassDefFoundError: org/apache/regexp/RESyntaxException Allgemeines EE 24
mor16Euro Servlet Fehler code: The requested resource is not available Allgemeines EE 7
M Servlet Fehler beim Start der Serveranwendung Allgemeines EE 3
N Fehler 403 bei Sessiontimeout mit <security-constraint> Allgemeines EE 0
A LDAP Auth Fehler Allgemeines EE 5
J Fehler beim deployen von seam 2.2.2-Projekt Allgemeines EE 9
Ezra BIRT - Report erzeugt Fehler Allgemeines EE 26
JimPanse Tomcat Fehler nach redeploy Allgemeines EE 5
Z OSGi Implementierung - Fehler bei Import Package Allgemeines EE 9
H fehler beim deployen von ear file Allgemeines EE 2
E Fehler bei SQL Abfrage MAX Allgemeines EE 10
M Fehler bei Javamail Session mit Glassfish 3 Allgemeines EE 3
C WebStart Fehler nach update auf Java 1.6 Allgemeines EE 2
A jsf: Servlet aufrufen, wie geht das? web.xml Fehler? Allgemeines EE 13
M Fehler in JSF Anwendung Allgemeines EE 4
J Konvertierungs-Fehler: Wert ''{0}'' für Modell ''{1}'' Allgemeines EE 10
N Jboss als Dienst -> Fehler 1053 Allgemeines EE 1
G Fehler, wenn <f:view> Tag als Startseite Allgemeines EE 2
R auf der Suche nach dem Fehler,Sessions + Arrays Allgemeines EE 4
K Datatable Löschen Fehler Allgemeines EE 6
A Problem / Fehler beim Einbinden einer Klasse in ein JSP Allgemeines EE 20
G JSTL Fehler Allgemeines EE 2
F Fehler beim deployen von jsp und servlet Allgemeines EE 7
F Buildscript Fehler weblogic/Deployer Allgemeines EE 2
T Jsp die mehrere Servlets aufruft erzeugt Fehler Allgemeines EE 10
M Fehler aufruf von Index.html Allgemeines EE 7
K [Sun AppServer 8.1] Fehler beim deployen Allgemeines EE 12
M EJB Fehler Allgemeines EE 2
X JBoss InitialContext problem Allgemeines EE 5
P InitialContext lookup gibt NULL zurück Allgemeines EE 2
J Timeout für InitialContext Allgemeines EE 2
A Webservice (SOAP) Lookup Allgemeines EE 1
S Manueller EJB Lookup im JBoss AS 7.0.1 Allgemeines EE 8
J JNDI-lookup.. dasselbe Objekt oder Kopie? Allgemeines EE 2
A JNDI Lookup Allgemeines EE 6
E Eclipse Helios JNDI Lookup failed Allgemeines EE 5
M Problem mit Lookup auf EJB3 mit Glassfish Allgemeines EE 11
B Problem mit jndi lookup Allgemeines EE 7

Ähnliche Java Themen

Neue Themen


Oben