WebStart - EJB Methodenaufruf bleibt hängen

daywalkertp

Erfahrenes Mitglied
Guten Tag,

steh wie immer vor einem merkwürdigem Problem. Ich habe eine Clientanwendung geschrieben, welche auf ein einfaches Stateless Session Bean zugreift und eine Methode aufruft:

Code:
package com.something.simple;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import de.test.MySimpleRemote;

public class ConnectionTest2 {
	public static void main(String[] args) {
		try {
			System.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
			System.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces");
			System.setProperty("java.naming.provider.url", "testrechner:1099");
			System.setProperty("jnp.timeout", "1000");
			
			Context context = new InitialContext();
			System.out.println("load bean:");
			MySimpleRemote simple = (MySimpleRemote) context.lookup("MySimpleBean/remote");
			System.out.println("bean: " + simple);
			simple.sayHello("Yahhoo");
			System.out.println("...complete!");
			
		}catch (NamingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

Wenn ich es lokal aus Eclipse starte funktioniert alles und auf dem Server wird die übergebene Zeichenkette ausgegeben. Nun habe ich meine Applikation WebStart fähig gemacht, indem ich die folgende JNLP Datei angefertigt und das ganze auf einen Webserver portiert habe:

Code:
<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="http://testrechner:8080/WebTestSimple" href="main.jnlp">
  <information>
    <title>Simple App</title>  
    <vendor>Test123</vendor>
    <homepage href=" " /> 
    <description>This is a test client</description> 
    <icon kind="splash" href="splash.gif"/>
  </information>

  <security>
    <all-permissions/>
  </security>
 
  <!-- The name of the main class to execute. This does not change-->
  <application-desc main-class="com.something.simple.ConnectionTest2" />
 
  <resources>
    <!-- Reference to the launcher jar. The version segment must be updated to the version being used-->
    <jar href="simple.jar"/>
    <jar href="jbossall-client.jar"/>
    <jar href="SimpleEJB.jar"/>
 
    <!-- Reference to all the plugins and features constituting the application -->
    <!-- Here we are referring to the wrapper feature since it transitively refers to all the other plug-ins  necessary -->

  </resources>

  <resources os="Mac">
    <j2se version="1.5+" java-vm-args="-XstartOnFirstThread"/>
  </resources>
  <resources os="Windows">
    <j2se version="1.6+"/>
  </resources>
  <resources os="Linux">
    <j2se version="1.4+"/>
  </resources>
</jnlp>

Beim Aufruf der JNLP Datei in einem Browser wird alles ordnungsgemäß runtergeladen, verifiziert und gestartet.

Nun zu meinem Problem:
Die Anwendung bleibt in der Zeile hängen, indem die sayHello() Methode der Session Bean aufgerufen wird. Beim Server kommt nichts an und es wird weder auf dem Client noch auf dem Server eine Exception geworfen. Das Programm reagiert einfach nicht mehr.
Ein ähnliches Problem gab es anscheinend schon, hat aber wohl niemand lösen können: http://www.jboss.com/index.html?module=bb&op=viewtopic&t=118045

Ich verwende:
- Java Web Start 1.6.0_10-beta
- Verwendung der JRE-Version 1.6.0_10-beta Java HotSpot(TM) Client VM
- JBoss 4.2.2 GA
 
Läuft auf dem Client ne Firewall? EJB Remoteaufrufe werden über RMi realisiert, so dass da evtl. ein Port blokiert sien könnte.

Gruß
Ollie
 
Danke Oliver, für den Tipp.
Ich habe beide Firewalls (auf Client und Server) deaktiviert und erhalte leider immer noch das selbe Phänomen. Liegt also doch nicht an der Firewall. Wenn ich den JBoss auf dem Clientrechner starte und bei java.naming.provider.url localhost:1099 angebe, funktioniert das mit dem Webstart und dem Methodenaufruf der Session Bean. Wenn ich anstelle von localhost den richtigen Rechnername eingebe, auf dem der JBoss läuft, funktioniert es wieder nicht. Könnte also sein, dass es ein Problem beim Auflösen des Rechnernamens gibt. Vielleicht liegt das am Proxyserver?! Könnte ja sein, dass die benötigten Ports dort deaktiviert sind. Könnte das sein?
 
Zuletzt bearbeitet:
Ok, lag doch tatsächlich am Proxyserver!

Beim Client lässt es sich im "Java Control Panel" Einstellen, welches sich bei Systemsteuerung unter Windows finden lässt. Dort dann beim Tab/Reiter Allgemein auf den "Netzwerkeinstellungen..." Button klicken und den Radiobutton "Proxyserver verwenden" auswählen. Dann nur noch das Häckchen bei "Proxyserver für lokale Adressen umgehen" setzten und gut ist. ... Verdammt, wieso ist mir das nicht früher eingefallen :D
 
Zurück