Problemas de acceso de aplicaciones

Para solucionar los problemas que surgen cuando un servlet, archivo JSP (JavaServer Pages), aplicación autónoma u otro cliente intenta acceder a un enterprise bean, ConnectionPool u otro objeto con nombre que alberga WebSphere Application Server, en primer lugar debe verificar que se pueda acceder al servidor de destino desde el cliente.

Siga estos pasos:
  • Desde un indicador de mandatos del servidor del cliente, escriba ping nombre_servidor y compruebe la conectividad.
  • Utilice la consola administrativa para comprobar que el servidor de aplicaciones del recurso de destino y, si es aplicable, el módulo EJB (Enterprise JavaBean) o el módulo web, se hayan iniciado.

Continúe solamente si no hay ningún problema con la conectividad y el recurso de destino parece estar ejecutándose.

Si no encuentra ningún problema que se asemeje al suyo o si la información proporcionada no resuelve el problema, póngase en contacto con el servicio de soporte de IBM® para obtener más ayuda.

La excepción NameNotFoundException desde la operación de búsqueda de JNDI

Existen tres causas para una excepción NameNotFoundException:

Nombre de la búsqueda incorrecta
Si encuentra una excepción NameNotFoundException cuando intenta acceder a un enterprise bean, origen de datos, recurso de mensajería u otro recurso:
  1. Determine la causa de la excepción NameNotFoundException.

    Examine las propiedades del objeto de destino de la consola administrativa y compruebe que el nombre JNDI (Java™ Naming and Directory Interface) que especifica coincide con el nombre JNDI que está utilizando el cliente.

    Si busca un objeto que reside en un servidor distinto al servidor desde el que se ha obtenido el contexto inicial, debe utilizar el nombre totalmente calificado.
    • Si accede desde otro objeto de servidor como, por ejemplo, un servlet que accede a un enterprise bean y está utilizando el contexto por omisión, que no especifica el nombre JNDI totalmente calificado, es posible que reciba una excepción NameNotFoundException si el objeto se está albergando en un servidor diferente.
    • Si se accede desde un cliente autónomo, es posible que el objeto al que está intentado acceder esté en un servidor distinto del servidor desde el que ha obtenido el contexto inicial.
  2. Utilice el nombre JNDI totalmente cualificado para corregir el problema.
    Si el objeto está en un solo servidor, el nombre JNDI totalmente cualificado es el siguiente:
    cell/nodes/nombre_nodo/servers/nombre_servidor/nombre_jndi
    Restricción: En este release no se da soporte a objetos.
    Si el objeto está en un clúster de servidores, el nombre JNDI totalmente cualificado es el siguiente:
    cell/clusters/nombre_clúster/nombre_jndi
El objeto buscado no está enlazado
Para corregir una excepción NameNotFoundException en la que el objeto que se está buscando no está enlazado:
  1. Si el objeto que se está buscando es un objeto de aplicación como, por ejemplo, un enterprise bean, asegúrese de que la aplicación se esté ejecutando.
  2. Ejecute la herramienta dumpNameSpace para ver el contenido del espacio de nombres para comprobar que el objeto que se está buscando está enlazado con el espacio de nombres con el nombre previsto.
Dos servidores con el mismo nombre ejecutándose en el mismo host se están utilizando para la interoperatividad
Si una aplicación que se ejecuta en un servidor en el nodo1 utiliza una referencia a un objeto remoto que reside en un servidor con un nombre similar en el nodo2, y los dos nodos se instalan en el mismo host,se pueden producir varios errores diferentes:
  • Las búsquedas de JNDI fallan con una excepción NameNotFoundException.
  • Las referencias a objetos obtenidas por métodos que no sean búsquedas JNDI fallan, probablemente con una excepción org.omg.CORBA.OBJECT_NOT_EXIST.
  • Una referencia a un objeto remoto se resuelve de forma incorrecta en un objeto del proceso local debido a que el objeto también existe en el proceso local. Esto es, una referencia a un objeto remoto en el proceso de servidor en el nodo2 se resuelve incorrectamente en el mismo tipo de objeto en el proceso local, que es el proceso de servidor en el nodo1.

Las referencias a objetos entre los servidores de nodos diferentes y en hosts diferentes no dan como resultado una excepción incluso si los nombres de servidores no son exclusivos.

Para solucionar los errores, establezca la propiedad personalizada de la JVM (Java Virtual Machine) para el ORB (Object Request Broker), com.ibm.websphere.orb.uniqueServerName, en true para uno o para ambos servidores:
  1. Pulse Servidores > Tipos de servidor > Servidores de aplicaciones WebSphere > nombre_servidor > Gestión de Java y procesos > Definición de proceso > Máquina virtual Java > Propiedades personalizadas > Nuevo.
  2. En la página de valores de propiedades personalizadas, defina la propiedad personalizada.
    1. En Nombre, especifique com.ibm.websphere.orb.uniqueServerName.
    2. En Valor, especifique true.
  3. Pulse Aceptar.
  4. Pulse Guardar en la barra de tareas de la consola.
  5. Reinicie el servidor de aplicaciones.

Para impedir que se produzcan errores similares en el agente de nodo, puede establecer el ORB de la propiedad personalizada Java Virtual Machine del agente de nodo, com.ibm.websphere.orb.uniqueServerName, en true.

La excepción CannotInstantiateObjectException desde la operación de búsqueda de JNDI

Si encuentra esta excepción cuando intenta acceder a un enterprise bean, origen de datos, recurso de mensajes u otro recurso, las causas posibles son:
  • Se está buscando un objeto Java serializado pero las clases necesarias para deserializarlo no están en el entorno de ejecución.
  • Se está buscando un objeto de referencia y la factoría asociada que se ha utilizado para procesarlo como parte del proceso de búsqueda no se ejecuta correctamente.
Para determinar la causa exacta del problema:
  • Busque en las anotaciones cronológicas relevantes las excepciones que preceden de forma inmediata a la excepción CannotInstantiateObjectException. Si se trata de un error java.lang.NoClassDefFoundError o de una excepción java.lang.ClassNotFoundException, asegúrese de que el cargador de clases puede localizar la clase a la que se hace referencia en el mensaje de error.

    [AIX][Linux][HP-UX][Solaris][Windows][IBM i]Visualice los registros de JVM.

    [z/OS]Visualice las anotaciones cronológicas del servidor que aloja el recurso de destino.

  • Imprima el rastreo de pila para encontrar la causa raíz y busque la clase de factoría. Se llamará mediante javax.naming.NamingManager.getObjectInstance(). La causa de la anomalía dependerá de la implementación de la factoría y es posible que necesite ponerse en contacto con el desarrollador de la clase de factoría.

El mensaje NMSV0610I aparece en el archivo de anotaciones cronológicas del servidor que indica que se ha producido una excepción de denominación

Este error es meramente informativo y se proporciona por si la excepción está relacionada con el problema real. La mayor parte del tiempo no es así. Si lo fuera, el archivo de anotaciones cronológicas debe contener entradas adyacentes que proporcionen todo el contexto.

  • Si no sufre ningún problema, ignore este mensaje. Asimismo, ignore el mensaje si el problema que está sufriendo no parece estar relacionado con la excepción generada y si las anotaciones cronológicas de mensajes no contienen más mensajes de error adyacentes.
  • Si sufre un problema busque en las anotaciones cronológicas los mensajes de errores subyacentes.
  • La información proporcionada en el mensaje NMSV0610I puede proporcionar datos de depuración valiosos para otros mensajes de error adyacentes enviados como respuesta a la excepción de denominación que se ha producido.

La excepción OperationNotSupportedException desde la operación de contexto JNDI

Este error puede deberse a dos causas:
  • Una operación de actualización como, por ejemplo, un enlace, que se está realizando con un nombre que comienza por "java:comp/env". Este contexto y sus subcontextos son contextos de sólo lectura.
  • Una operación de enlace o reenlace (bind o rebind) de un objeto que no es un objeto CORBA que está realizándose en un espacio de nombres remoto que no pertenece al producto. Solamente se pueden enlazar objetos CORBA con estos espacios de nombres CosNaming.

Para determinar cuál de estos errores está ocasionando el problema, consulte el mensaje completo de excepción.

WSVR0046E: No se ha podido enlazar, ejb/jndiName: ejb/jndiName. Excepción original : org.omg.CosNaming.NamingContextPackage.AlreadyBound

Este error se produce cuando se instalan dos aplicaciones de servidor de enterprise bean en el mismo servidor de modo que puede producirse un conflicto de nombres de enlace. Es decir, un valor jndiName es igual en los descriptores de despliegue de las dos aplicaciones. El error surgirá durante el arranque del servidor cuando se inicie la segunda aplicación que utiliza el valor de jndiName.

Para comprobar que este es el problema, examine los descriptores de despliegue de todas las aplicaciones de servidor de enterprise beans que se ejecutan en el servidor para buscar un jndiName que se haya especificado en más de una aplicación de enterprise bean.

Para corregir el problema, cambie los valores de jndiName duplicados existentes para asegurarse de que cada enterprise del proceso servidor esté enlazado con un nombre diferente.

La excepción ConfigurationException desde la operación o "new InitialContext" o desde la operación de contexto de JNDI con un nombre de URL

Si está intentando obtener un contexto JNDI inicial, se puede producir una excepción de configuración debido a que se ha pasado un valor de propiedad JNDI no válido al constructor InitialContext. Esto incluye las propiedades JNDI establecidas en las propiedades del sistema o en algún archivo jndi.properties visible para el cargador de clases que estén en vigor. Un URL de proveedor creado incorrectamente es la causa más probable de que la propiedad sea incorrecta. Si el cliente JNDI se está ejecutando como un cliente ligero de modo que se ha establecido la CLASSPATH para que incluya todos los archivos jar individuales necesarios, asegúrese de que el archivo .jar contenga el archivo de propiedades com/ibm/websphere/naming/jndiprovider.properties en la CLASSPATH.

Si la excepción se produce desde un llamada de contexto JNDI con un nombre que tiene formato de URL, es posible que la configuración JNDI actual no se haya configurado correctamente de modo que el nombre de clase de factoría necesario no se puede determinar o que la factoría no resulte visible para el cargador de clases que actualmente está en vigor. Si el nombre es un URL de Java:, el cliente JNDI debe estar ejecutándose en un entorno de cliente o servidor Java EE (Java Platform, Enterprise Edition). Es decir, el cliente debe estar ejecutándose en un contenedor.

Consulte el mensaje de excepción para verificar la causa.

Si la excepción la ha generado el constructor InitialContext, corrija el valor de la propiedad o la CLASSPATH.

Si la excepción la ha generado un método de contexto JNDI, asegúrese de que la propiedad java.naming.factory.url.pkgs incluya el nombre de paquete de la factoría que el esquema URL necesita en el nombre. Los nombres de URL con un esquema Java solamente pueden utilizarse si se ejecutan en un contenedor.

La excepción ServiceUnavailableException desde la operación "new InitialContext"

Esta excepción indica que se ha producido algún problema imprevisto cuando se intentaba contactar al servidor de nombres para obtener un contexto inicial. Puede consultar la excepción ServiceUnavailableException para conocer la causa raíz. Consulte la causa raíz para obtener más información. Es posible que algunos de los problemas descritos para CommunicationExceptions también den como resultado una excepción ServiceUnavailableException.

Dado que esta excepción se activa mediante un error imprevisto, no hay ninguna causa probable que lo confirme. Si la excepción de la causa raíz no indica cuál es la causa probable, consulte las causas posibles que se listan para CommunicationExceptions.

Se genera la excepción CommunicationException en una operación "new InitialContext"

No se puede contactar al servidor de nombres que identifica el URL del proveedor para obtener el contexto JNDI inicial. Hay muchas causas posibles para este problema, entre ellas:
  • El nombre del host o el puerto del URL del proveedor es incorrecto.
  • El servidor de nombres de dominio no puede resolver el nombre del host en una dirección IP o la dirección IP no coincide con la dirección IP bajo la que se ejecuta realmente el servidor.
  • Un cortafuegos del cliente o del servidor impide que se utilice el puerto especificado en el URL del proveedor.
Para corregir este problema:
  • Asegúrese de que el URL del proveedor y las configuraciones de red de las máquinas de cliente y servidor sean correctas.
  • Asegúrese de que el nombre de host se pueda resolver en una dirección IP que la máquina del cliente pueda localizar. Puede hacerlo utilizando el mandato ping.
  • Si está ejecutando en un cortafuegos, asegúrese de que está permitido utilizar el puerto especificado en el URL del proveedor.

Icon that indicates the type of topic Reference topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rtrb_namingprobs
File name: rtrb_namingprobs.html