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