2011-01-31 1 views
1

Je rebâtie avec succès d'un simple Java Web Service (comme exemple, vous pouvez vous référer à la "Building simple web service")méthode de service web Invoke dans Java Applet

Dans Eclipse est facile de créer un client de service Web en utilisant le « Java Web Service Proxy technique "indiqué dans le tutoriel.

Je souhaite exécuter une applet Java qui fait la même chose avec l'application client Java: accéder au service Web, appeler les méthodes et renvoyer les résultats. Lorsque j'exécute le code par Eclipse (clic droit> "Exécuter en tant qu'applet Java ..") tout fonctionne bien .. quand je lance l'applet dans une simple page html l'applet démarre mais entre dans l'impasse: Aucune exception sont lancés et le processus est bloqué sans rien faire sur la ligne qui crée la classe MyWebServiceProxy, invoquant le constructeur par défaut.

Quelqu'un peut-il m'aider dans ce domaine?

je colle ici un code pour vous permettre de mieux comprendre ce que je fais dans l'applet:

public class SimpleWSApplet extends Applet { 

public void paint(Graphics g) 
{ 
    String msg = "Applet initialized"; 
    int i = 1; 
    g.drawString(msg, 20, 20*i++); 

    msg = "Error in applet"; 
    try { 
    Service service = new Service(); 
    Call call = (Call)service.createCall(); 
    call.setTargetEndpointAddress("http://localhost:8080/AppletWSTest/services/SimpleWS"); 
    call.setOperationName(new QName("http://soapinterop.org/", "getMessage")); 
    msg = (String)call.invoke(new Object[]{}); 
    } catch (Exception e) { 
    e.printStackTrace(); 
    msg = "Error: "+e.getMessage(); 
    } 
    g.drawString(msg, 20, 20*i++); 
    //g.drawString(executeInvocation(msg), 20, 20*i++); 
} 
} 

Il est évident que mon service Web est appelé « SimpleWS » et la méthode que j'invoque est appelé « getMessage » , il ne prend aucun argument et renvoie une chaîne.

S'il vous plaît aidez-moi ..

Répondre

3

Comme vous le savez, les applets Java sont exécutées dans un bac à sable. Par défaut, les applets n'ont accès à aucune ressource Web, à l'exception de leurs serveurs d'origine. Seules les applets signées peuvent accéder à ce type de ressources. Par conséquent, vous devriez sign votre applet.

+0

J'ai signé l'applet, qui demande maintenant le certificat, mais il dit que org.apache.axis ne trouve pas ma classe alors que je suis sûr que c'est dans le fatjar que j'ai créé. Dois-je inclure des jars dans la propriété "archive" dans l'étiquette de l'applet? Si oui, lequel? – arielten

+1

avez-vous inclus des classes d'axe à votre jar signé? .. Il semble que ces classes ne sont pas incluses .. Et aussi, vous pouvez utiliser jax-ws pour les services web, de cette façon, vous n'avez pas besoin d'une bibliothèque tierce comme apache axe. –