NPE in JBossWS auf JBoss 4.2.2 mit jmxremote aktiviert
Ich versuche, einrichten von JBoss 4.2.2 und JConsole für die remote-überwachung. Als pro viele how-to ' s habe ich auf dem web gefunden werden, um dies zu tun, müssen Sie aktivieren jmxremote durch die Einstellung der folgenden Optionen ausführen.conf. (Ich erkenne den anderen beiden entscheidet sich deaktivieren der Authentifizierung)
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=11099"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=false"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false"
Die Ergebnisse in der folgenden Ausnahme:
13:06:56,418 INFO [TomcatDeployer] performDeployInternal :: deploy, ctxPath=/services, warUrl=.../tmp/deploy/tmp34585xxxxxxxxx.ear-contents/mDate-Services-exp.war/
13:06:57,706 WARN [AbstractServerConfig] getWebServicePort :: Unable to calculate 'WebServicePort', using default '8080'
13:06:57,711 WARN [AbstractServerConfig] getWebServicePort :: Unable to calculate 'WebServicePort', using default '8080'
13:06:58,070 WARN [AbstractServerConfig] getWebServicePort :: Unable to calculate 'WebServicePort', using default '8080'
13:06:58,071 WARN [AbstractServerConfig] getWebServicePort :: Unable to calculate 'WebServicePort', using default '8080'
13:06:58,138 ERROR [MainDeployer] start :: Could not start deployment: file:/opt/jboss-4.2.2.GA/server/default/tmp/deploy/tmp34585xxxxxxxxx.ear-contents/xxxxx-Services.war
java.lang.NullPointerException
at org.jboss.wsf.stack.jbws.WSDLFilePublisher.getPublishLocation(WSDLFilePublisher.java:303)
at org.jboss.wsf.stack.jbws.WSDLFilePublisher.publishWsdlFiles(WSDLFilePublisher.java:103)
at org.jboss.wsf.stack.jbws.PublishContractDeploymentAspect.create(PublishContractDeploymentAspect.java:52)
at org.jboss.wsf.framework.deployment.DeploymentAspectManagerImpl.deploy(DeploymentAspectManagerImpl.java:115)
at org.jboss.wsf.container.jboss42.ArchiveDeployerHook.deploy(ArchiveDeployerHook.java:97)
...
Meine Anwendung verwendet die Zeugen Jehovas, die nach diesem bug:
https://jira.jboss.org/jira/browse/JBWS-1943
Empfiehlt diese Problemumgehung:
JAVA_OPTS="$JAVA_OPTS -Djavax.management.builder.initial=org.jboss.system.server.jmx.MBeanServerBuilderImpl"
JAVA_OPTS="$JAVA_OPTS -Djboss.platform.mbeanserver"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote"
Habe ich versucht, aber das wirft dann die folgende Ausnahme beim bereitstellen eines sar-Datei in mein Ohr, die nur auf die Klasse, die implementiert terminlich für ein paar geplante Aufträge meine Anwendung erfordert:
Caused by: java.lang.NullPointerException
at EDU.oswego.cs.dl.util.concurrent.ConcurrentReaderHashMap.hash(ConcurrentReaderHashMap.java:298)
at EDU.oswego.cs.dl.util.concurrent.ConcurrentReaderHashMap.get(ConcurrentReaderHashMap.java:410)
at org.jboss.mx.server.registry.BasicMBeanRegistry.getMBeanMap(BasicMBeanRegistry.java:959)
at org.jboss.mx.server.registry.BasicMBeanRegistry.contains(BasicMBeanRegistry.java:577)
Irgendwelche Vorschläge, wo man von hier aus gehen?
EDIT:
Habe ich auch versucht die folgende Variante:
JAVA_OPTS="$JAVA_OPTS -DmbipropertyFile=../server/default/conf/mbi.properties -DpropertyFile=../server/default/conf/mdate.properties -Dwicket.configuration=DEVELOPMENT"
JAVA_OPTS="$JAVA_OPTS -Djavax.management.builder.initial=org.jboss.system.server.jmx.MBeanServerBuilderImpl"
JAVA_OPTS="$JAVA_OPTS -Djboss.platform.mbeanserver"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote"
Ich bin mit dem JDK 1.6.0_01-b06
InformationsquelleAutor Jeremy | 2008-09-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich ehrlich gesagt noch nie versucht, diese remoting-Ansatz. Aber, wenn beide Ihre client-Computer und dem server passieren, beide linux-Boxen oder ähnliches *Nixen mit SSH, dann können Sie
ssh -XCA
auf den server und starten Sie JConsole auf dem server und die GUI-Anzeige auf dem client-Rechner mit X-port-forwarding. Ein JConsole läuft lokal auf dem server-JVM, die Sie überwachen möchten sollte keine Probleme mit der Verbindung.Ich persönlich denke, das ist ein netter trick, aber ich merke, dass es somit nicht wirklich lösen das problem der immer JConsole, um eine Remote-Verbindung über die Zeugen Jehovas.
InformationsquelleAutor Chris Vest
Erste, was ich tun würde, ist das löschen von /tmp und /work-Verzeichnisse unter JBoss /default und implementieren Sie den KRIEG. Wenn das nicht wäre, würde ich das upgrade der JDK verwenden Sie eine neuere version von 1.6. 1.6.0_01 ist ziemlich alt.
InformationsquelleAutor Nik
Ich bin mir nicht sicher ob es einen bestimmten Grund, den Sie versuchen zu verwenden, WS Zugriff auf den mbean-server, sondern mit JConsole Sie können auch direkt auf eine remote JVM. Dazu verwenden Sie die "service:jmx:rmi:///jndi/rmi://<remote-Maschine - >:<port>/jmxrmi" (wo <remote-Maschine - > ist, was auch immer Ihre Maschine eine Verbindung herstellen möchten, und <port> ist 11099) als remote-Prozess.
Habe ich diese verwendet, um eine Verbindung zu einem beliebigen JVM 1.6, stellt eine mbean-server (JBoss, ActiveMQ, etc).
InformationsquelleAutor mattkemp
Ich weiß nicht, ob dies ist verwandt, aber JBoss hat eine Tendenz, redirect auf sich selbst. Wenn Sie eine Verbindung zu einem host sagen, jboss.localdomain:3873, wollen sich zu verbinden, um eine ejb, JBoss, könnte lookup seinen eigenen Hostnamen und die Umleitung zu der Adresse, bekommt es von dort. Wenn Sie einen öffentlichen Hostnamen, könnte es feststellen, dass anstatt (sagen jboss.publicdomain.com), und sagen Sie dem client, eine Verbindung zu jboss.publicdomain.com:1099. Abhängig von Ihrer DNS, das möglicherweise oder möglicherweise nicht eine erreichbare Adresse, die von Ihrem client.
Gibt es verschiedene varations dieses problem, und als bonus, manchmal die erste "Verbindung überprüfen" funktioniert, so dass die client-app setzt, scheitert aber später auf verbinden.
InformationsquelleAutor Alexander Torstling
Hatte ein ähnliches Problem, aber mit JBoss Seam: werfen Sie einen Blick auf JBSEAM-4029. Als eine der Abhilfen es schlägt das überschreiben der Klasse läuft, in der NPE - Naht Fall die
JBossClusterMonitor
.Ich Wette, die Zeugen Jehovas-code ausgeführt wird in exakt gleiche Problem, d.h. der Beendigung aufrufen
MBeanServerFactory.findMBeanServer(null)
an einem gewissen Punkt in der Zeit. Der stack-trace sollte zeigen, welche genaue Klasse tut dies.InformationsquelleAutor anikitin