tools sts plugin oxygen instalar for java eclipse jboss jboss-tools

java - sts - Problemas con el cierre de JBoss en Eclipse si cambio el puerto JNDI



jboss tools eclipse mars (7)

1ra fase

Tengo un problema al cerrar mi instancia de ejecución de JBoss en Eclipse desde que cambié el puerto JNDI de JBoss. Por supuesto, puedo cerrarlo desde la vista de la consola pero no con el botón de detención (todavía busca el puerto JNDI en el puerto 1099 predeterminado). Estoy esperando cualquier solución. ¡Gracias!

Ambiente usado:

  • JBoss 4.0.2 (usando el valor predeterminado )
  • Eclipse 3.4.0. (usando JBoss Tools 2.1.1.GA)

Puertos predeterminados: 1098, 1099 Puertos modificados: 11098, 11099

Cambié la siguiente parte en jbosspath / server / default / conf / jboss-service.xml:

<!-- ==================================================================== --> <!-- JNDI --> <!-- ==================================================================== --> <mbean code="org.jboss.naming.NamingService" name="jboss:service=Naming" xmbean-dd="resource:xmdesc/NamingService-xmbean.xml"> <!-- The call by value mode. true if all lookups are unmarshalled using the caller''s TCL, false if in VM lookups return the value by reference. --> <attribute name="CallByValue">false</attribute> <!-- The listening port for the bootstrap JNP service. Set this to -1 to run the NamingService without the JNP invoker listening port. --> <attribute name="Port">11099</attribute> <!-- The bootstrap JNP server bind address. This also sets the default RMI service bind address. Empty == all addresses --> <attribute name="BindAddress">${jboss.bind.address}</attribute> <!-- The port of the RMI naming service, 0 == anonymous --> <attribute name="RmiPort">11098</attribute> <!-- The RMI service bind address. Empty == all addresses --> <attribute name="RmiBindAddress">${jboss.bind.address}</attribute> <!-- The thread pool service used to control the bootstrap lookups --> <depends optional-attribute-name="LookupPool" proxy-type="attribute">jboss.system:service=ThreadPool</depends> </mbean> <mbean code="org.jboss.naming.JNDIView" name="jboss:service=JNDIView" xmbean-dd="resource:xmdesc/JNDIView-xmbean.xml"> </mbean>

Configuración de Eclipse:

http://img03.picoodle.com/img/img03/3/10/6/f_jbossm_3960e2f.png

Acerca de mis preferencias de JBoss Tools: tenía una versión anterior, recibí este problema, leí sobre alguna corrección de errores en JbossTools, por lo que actualicé a 2.1.1.GA. Ahora los botones han cambiado, y tengo una nueva vista de preferencias, pero no puedo modificar nada ... parece ser también anormal:

http://img29.picoodle.com/img/img29/3/10/5/f_jtoolsprefsm_2ce5348.png

Cuadro de diálogo de error:

http://img02.picoodle.com/img/img02/3/10/6/f_errorm_aa37ad4.png

La stacktrace:

javax.naming.CommunicationException: Could not obtain connection to any of these urls: localhost:1099 [Root exception is javax.naming.CommunicationException: Failed to connect to server localhost:1099 [Root exception is javax.naming.ServiceUnavailableException: Failed to connect to server localhost:1099 [Root exception is java.net.ConnectException: Connection refused: connect]]] at org.jnp.interfaces.NamingContext.checkRef(NamingContext.java:1385) at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:579) at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:572) at javax.naming.InitialContext.lookup(InitialContext.java:347) at org.jboss.Shutdown.main(Shutdown.java:202) Caused by: javax.naming.CommunicationException: Failed to connect to server localhost:1099 [Root exception is javax.naming.ServiceUnavailableException: Failed to connect to server localhost:1099 [Root exception is java.net.ConnectException: Connection refused: connect]] at org.jnp.interfaces.NamingContext.getServer(NamingContext.java:254) at org.jnp.interfaces.NamingContext.checkRef(NamingContext.java:1370) ... 4 more Caused by: javax.naming.ServiceUnavailableException: Failed to connect to server localhost:1099 [Root exception is java.net.ConnectException: Connection refused: connect] at org.jnp.interfaces.NamingContext.getServer(NamingContext.java:228) ... 5 more Caused by: java.net.ConnectException: Connection refused: connect at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:305) at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:171) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:158) at java.net.Socket.connect(Socket.java:452) at java.net.Socket.connect(Socket.java:402) at java.net.Socket.<init>(Socket.java:309) at java.net.Socket.<init>(Socket.java:211) at org.jnp.interfaces.TimedSocketFactory.createSocket(TimedSocketFactory.java:69) at org.jnp.interfaces.TimedSocketFactory.createSocket(TimedSocketFactory.java:62) at org.jnp.interfaces.NamingContext.getServer(NamingContext.java:224) ... 5 more Exception in thread "main"

2da fase:

Después de crear un nuevo servidor en File / new / other / server, apareció en la pestaña de preferencias. Ahora el botón de detención está funcionando (el servidor recibe los mensajes de apagado sin ninguna modificación adicional del puerto jndi, no hay oportunidad ahora) pero aún arroja un mensaje de error, aunque diferente, es sin excepción el seguimiento de la pila: "Servidor El servidor JBoss 4.0 no pudo detenerse ".


En la configuración del servidor MyEclipse, encontrará el campo "Argumento de apagado opcional", que se completa con el valor predeterminado

--shutdown

Cambiarlo a

-s jnp://localhost:11099 --shutdown

Editado:

Lo siento, esta respuesta está relacionada con MyEclipse. Sin embargo, debe haber algún lugar donde también pueda especificar el comando de apagado de JBoss en su entorno. Tal vez eche un vistazo a las configuraciones "Ejecutar ..."


OK, lo que tienes que hacer es File-> New-> Other-> Server, y configura tu servidor JBoss allí. Aparecerá en Preferencias-> JBossTools-> Servidores.

Complejo.


debe modificar en el archivo "/home/fmoisa/workspace/eclipse/plugins/org.eclipse.jst.server.generic.jboss_1.5.206.v20090115/servers/jboss42.serverdef" esto:

org.jboss.Shutdown $ {serverRootDirectory} / bin -S -Djboss.boot.loader.name = shutdown.bat jboss.shutdown

a esto:

org.jboss.Shutdown $ {serverRootDirectory} / bin -S -sjnp: // localhost: 11099 -Djboss.boot.loader.name = shutdown.bat jboss.shutdown

gl todo;)


Utilice el adaptador de servidor proporcionado por las herramientas de JBoss y no el que viene predeterminado de Eclipse WTP.

A continuación, puede hacer doble clic en el servidor y editar el puerto JNDI (que, por cierto, se recupera automáticamente de la configuración XML si no hace nada). También puede hacer el truco sobre la configuración del puerto JNDI a través de los argumentos de línea de comando en la Configuración de inicio, pero eso es más problemático que simplemente establecer los valores del puerto.


Aquí hay una solución detallada para este problema: El conector del servidor Eclipse WTP no apagará JBoss cuando se vuelva a asignar el puerto jndi.

Esto se debe a que los perfiles del conector del servidor predeterminado no usan su propio alias para jndiPort. Este problema también se discute en eclipse.org: http://www.eclipse.org/forums/index.php?t=msg&goto=489439&S=0db4920aab0a501c80a626edff84c17d#msg_489439

La solución proviene de los archivos .serverdef en eclipse:

<eclipse>/plugins/org.eclipse.jst.server.generic.jboss_1.5.105.v200709061325/servers/jboss*.serverdef

Declaran una propiedad xml para el puerto jndi:

<property id="jndiPort" label="%jndiPort" type="string" context="server" default="1099" />

Esto simplemente necesita ser usado donde el serverdef tiene codificado el comando STOP:

Así que esto:

<stop> <mainClass>org.jboss.Shutdown</mainClass> <workingDirectory>${serverRootDirectory}/bin</workingDirectory> <programArguments>-S</programArguments> <vmParameters></vmParameters> <classpathReference>jboss</classpathReference> </stop>

se convierte en esto:

<stop> <mainClass>org.jboss.Shutdown</mainClass> <workingDirectory>${serverRootDirectory}/bin</workingDirectory> <programArguments>-s jnp://${serverAddress}:${jndiPort}</programArguments> <vmParameters></vmParameters> <classpathReference>jboss</classpathReference> </stop>

La filosofía de esto se puede verificar en comparación con la definición de la conexión jndi:

<jndiConnection> <providerUrl>jnp://${serverAddress}:${jndiPort}</providerUrl> <initialContextFactory>org.jnp.interfaces.NamingContextFactory</initialContextFactory> <jndiProperty> <name></name> <value></value> </jndiProperty> </jndiConnection>

El crédito por la inspiración para esta corrección de caso general va para: Moisa Laurentiu Florin. Fue su contribución la que me hizo buscar una forma de sustituir en $ {jndiPort} en lugar de un valor codificado.

Esta solución corrige tanto el conector de servidor WTP de Eclipse simple. Todavía estoy investigando el conector IDE de JBOss


Abra jboss-path / bin / shutdown.jar

ejemplo: jboss-4.2.3.GA / bin / shutdown.jar

y abra jboss-path / bin / shutdown.jar / jndi.properties

y cambio

java.naming.provider.url = jnp: // localhost: 1099 a java.naming.provider.url = jnp: // localhost: 11099


Esto fue cambiado en JBoss 6.0.0M3.

El comando de parada es ahora:

"- s servicio: jmx: rmi: /// jndi / rmi: // localhost: 1090 / jmxrmi"

Tenga en cuenta que el puerto también cambió: ya no es el puerto JNDI en 1099 , sino el puerto RMI / JMX 1090 . Por lo tanto, necesitará otro parámetro de configuración en la definición del servidor.

No sé si el parámetro "puerto JNDI" es obligatorio para los servidores JBoss 6.0.0M3.

Tengo un plugin de eclipse modificado en http://www.cs.hs-rm.de/~knauf/public/ que contiene una definición de servidor para 6.0.0M3 que incluye este cambio. Este sitio también enlaza a un hilo del foro JBoss con más detalles sobre este cambio.

Atentamente

Wolfgang Knauf