Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当启用身份验证时,在容器外部运行的Java Web服务只允许一个用户连接_Java_Web Services_Jax Ws - Fatal编程技术网

当启用身份验证时,在容器外部运行的Java Web服务只允许一个用户连接

当启用身份验证时,在容器外部运行的Java Web服务只允许一个用户连接,java,web-services,jax-ws,Java,Web Services,Jax Ws,我正在通过webservices为一些游戏搭建一个框架,出于各种原因,这些游戏需要在没有应用程序容器的情况下运行 在这一点上,我所追求的是每个玩家都将进行身份验证,并点击登录服务。登录服务在所有玩家登录后才会返回,因此玩家知道一旦呼叫完成,他们就可以开始玩了 我遇到的问题是,在没有身份验证的情况下,这可以正常工作,但是一旦我启用身份验证,第一个播放器就会正确地进行身份验证和连接,但是第二个播放器就无法连接,只要第一个播放器在等待登录服务返回 服务内容如下: public void login()

我正在通过webservices为一些游戏搭建一个框架,出于各种原因,这些游戏需要在没有应用程序容器的情况下运行

在这一点上,我所追求的是每个玩家都将进行身份验证,并点击登录服务。登录服务在所有玩家登录后才会返回,因此玩家知道一旦呼叫完成,他们就可以开始玩了

我遇到的问题是,在没有身份验证的情况下,这可以正常工作,但是一旦我启用身份验证,第一个播放器就会正确地进行身份验证和连接,但是第二个播放器就无法连接,只要第一个播放器在等待登录服务返回

服务内容如下:

public void login()
{
    Game game = Game.getInstance();
    while (game.getStatus() != Status.RUNNING)
    {
        try
        {
            Thread.sleep(10);               
        } 
        catch (InterruptedException e)
        {
            // swallow it, doesn't matter
        }
    }
}
客户机看起来像(精简到连接逻辑):

服务器以以下方式启动:

public void startServer()
{
    server.start();
    endpoint = Endpoint.create(new ChallengeService());
    server = HttpServer.create(new InetSocketAddress(7070), 5);
    context = server.createContext("/Challenge/ChallengeService");
    context.setAuthenticator(new StandaloneAuthenticator("Challenge")); // disabling this works
    endpoint.publish(context);
}

有什么想法吗?

“.出于各种原因……”我在听。原因是什么?这个游戏框架在实际运行时,将在托管环境中运行。玩家将使用Java或C#编写客户端代码,我们希望为他们提供一种不依赖于服务器的离线测试机制。我不能期望C#players安装一个应用服务器来进行测试(这是为了一个有合理奖金的编码比赛),所以我需要它能够在没有应用服务器的情况下独立运行。“我不能期望C#players安装一个应用服务器来进行测试。”(这是一个有合理奖励的编码竞赛)“我认为期望开发者安装一个(免费的)app.server.Heck来做Android开发是非常合理的。我不得不安装Netbeans(这对我的带宽来说是一个巨大的代价).人们非常懒惰-我们去年举办了这场比赛,人们会因为最小的原因而放弃。C#们似乎害怕Java服务器。是的,我完全同意你的看法,但我们举办这场比赛主要是为了宣传,所以我们需要尽可能多的参赛者。
public void startServer()
{
    server.start();
    endpoint = Endpoint.create(new ChallengeService());
    server = HttpServer.create(new InetSocketAddress(7070), 5);
    context = server.createContext("/Challenge/ChallengeService");
    context.setAuthenticator(new StandaloneAuthenticator("Challenge")); // disabling this works
    endpoint.publish(context);
}