SOAP多个对象实例

时间:2017-03-10 16:30:48

标签: java soap

我需要一些帮助来理解SOAP。所以它是一个基本的hangman应用程序,它在服务器上运行并发布一个对象。当多个客户端连接到服务器时,他们获得相同的对象,而不是他们自己的游戏实例。我该如何解决这个问题?

服务器:

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package hangman;

import static java.lang.System.in;
import java.rmi.Naming;
import java.rmi.Remote;
import java.util.Scanner;
import javax.xml.ws.Endpoint;
import brugerautorisation.transport.soap.BrugeradminImpl;
import brugerautorisation.server.Brugerdatabase;


/**
 *
 * @author TheGeek
 */
public class server {

   public static void main(String [] args)throws Exception{

       HangI hang = new hangImpl();



    // Ipv6-addressen [::] svarer til Ipv4-adressen 0.0.0.0, der matcher alle maskinens netkort og 
        Endpoint.publish("http://ubuntu4.javabog.dk:9902/galgelegtjeneste", hang);

        System.out.println("Galgelegtjeneste publiceret min ven.");



   }



}

Hangclient:

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package hangman;

import brugerautorisation.transport.soap.Brugeradmin;
import java.util.Scanner;
import javax.xml.ws.Service;
import java.net.MalformedURLException;
import java.net.URL;
import javax.xml.namespace.QName;

/**
 *
 * @author TheGeek
 */
public class Hangclient {

    public static void main(String[] arg) throws MalformedURLException {
        URL url = new URL("http://ubuntu4.javabog.dk:9902/galgelegtjeneste?wsdl");
        QName qname = new QName("http://hangman/", "hangImplService");

        Service service = Service.create(url, qname);
        HangI hang = service.getPort(HangI.class);
//         BrugeradminImpl brgimpl = service.getPort(BrugeradminImpl.class);

        Scanner scanner = new Scanner(System.in);
        System.out.println("Du skal logge ind før, at du kan spille Galgeleg");
        while (true) {
            System.out.println("Indtast dit brugernavn (studie-nr.)");
            String bruger = scanner.nextLine();

            System.out.println("Indtast dit password");
            String password = scanner.nextLine();

            if (validate(bruger, password)) {
                break;
            }
        }
        System.out.println("Hej" + hang.erSpilletSlut());

        do{
        while (!hang.erSpilletSlut()) {

            System.out.println("Du skal gætte følgende ord: " + hang.getSynligtOrd());
            int antalforkertgæt = hang.getAntalForkertBogstaver();

            String bogstav = scanner.nextLine();
            hang.gætBogstav(bogstav);

            if (hang.erSpilletTabt() == true) {
                System.out.println("Spillet er tabt: " + hang.Getordet());
            }

            System.out.println("Brugte bogstaver" + hang.getBrugteBogstaver());

        }
            System.out.println("Spil igen?(y/n)");

        }while(hang.vilSpiligen(scanner.next()));

    }

    public static boolean validate(String studienummer, String kodeord) throws MalformedURLException {

        URL url = new URL("http://javabog.dk:9901/brugeradmin?wsdl");
        QName qname = new QName("http://soap.transport.brugerautorisation/", "BrugeradminImplService");
        Service service = Service.create(url, qname);
        Brugeradmin ba = service.getPort(Brugeradmin.class);
        try {
            ba.hentBruger(studienummer, kodeord);
            return true;

        } catch (Exception e) {
            System.out.println("forkert brugernavn");

            e.printStackTrace();
        }

        return false;
    }

}

0 个答案:

没有答案