问题标签 [java-server]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1503 浏览

java - 高负载java服务器

我正在制作多人游戏。现在我正在尝试选择将 android 设备连接到服务器的技术。客户端运行安卓,游戏为MMORPG。我想用java编写服务器。现在我只有3个想法:

1) 使用纯 java 和套接字创建多线程环境。这样在游戏客户端和服务器之间进行全双工连接会更容易。但我有以下担忧:

1.1)该游戏是具有大量对象的MMORPG,如果有例如5000人同时玩,我不确定这些解决方案如何缩放。我可以在 java Machine 上运行多少个线程?我该如何近似计算?如果每个套接字有 1 个线程正在读取,而 1 个线程正在写入套接字(因此 1 个玩家有 2 个线程)。

1.2) 当玩家数量增加时,我将如何扩展我自己编写的 jar-archive 以分布在多个服务器上?也许有一些特殊的技巧可以做到这一点?

1.3) 大量的编程开销 - 套接字 API 非常低级。

2) 创建一个用于服务 HTTP 请求的 Servlet 接口。

2.1) 只要每个玩家都有自己的会话,就易于控制会话(和授权)。

2.2) 可以连接到 java EE EJB 或其他 - 消除了系统级编程的许多复杂性。所以我可以专注于编写业务逻辑。

2.3) 可以使用HTTP服务所有类型的客户端——移动设备+浏览器。

2.4) 高速——即使是 1 个 servlet 容器每秒也可以处理几千个请求,所以速度非常快。

2.4)但是这种方法不能提供全双工通信。我将不得不每 1 秒发送一次请求以检查更新。1 秒的延迟对游戏来说并没有太大的区别,因为它是回合制的,但它仍然会产生大量的流量。有很多玩家玩的时候可行吗?我听说过一些COMET技术,但是如果服务器必须连续推送许多消息,我仍然必须每次发送请求+该技术尚未成熟。

3) 创建套接字并通过 JMS 将它们连接到 java EE 服务器。

3.1)很酷,因为允许客户端和服务器之间的全双工通信+提供Java EE的所有很酷的功能。以后可以通过servlet接口扩展到浏览器。

3.2)这似乎是某种过度工程。人们真的会这样做吗?我的意思是它甚至是正确的方法吗?任何理智的开发人员会这样做吗?

我希望你帮我做出选择。我没有太多做这样的工作的经验。并希望坚持最佳做法。

0 投票
1 回答
50 浏览

java-server - 从本地机器到服务器的 Java 应用程序

我正在本地机器上用 Java 开发应用程序。这是我的第一个项目,我担心我以错误的方式开始它,因为我必须在每台机器上安装它,这可能会暴露出诸如 Java 版本不兼容甚至在某些机器上没有它等问题。此外,我想用 HTML 编写 GUI。

所以,我决定最好编写一个服务器端应用程序并在浏览器中打开它。所有用户都通过 LAN 连接到服务器。

我想使用 WAMP 之类的东西,但是在 Java 中。我从未用 Java 编写过 Web 应用程序。

您能否帮我提供建议,我应该使用哪种技术(JSP,Apache Tomcat,其他),将现有代码转移到服务器中会遇到什么样的问题(我使用了很多外部库,比如 Apache POI, Jsoup、HttpClient等),以及Java服务器编程的教程(找了这么多资料,就是不知道从哪里开始学习)。

谢谢!

0 投票
2 回答
157 浏览

google-app-engine - Website behaving differently in Google App engine than in localhost - urlmapping

I was trying to do some stuffs with the tQueryCar : http://learningthreejs.com/blog/2012/05/21/sport-car-in-webgl/

I created a new app engine project and do the required stuffs and this webGL car was running fine on localhost. But when I uploaded it to app engine I'm getting some error in the firebug console. Everything is rendered except the car. This is the app engine url : http://tquerycar.appspot.com

I couldn't figure what actually is happening. Everything is working fine on localhost.

Edit : Ok. I have figured what's wrong is happening. My tQueryCar HTML code is making GET request to this address : http://tquerycar.appspot.com/plugins/car//examples/obj/veyron/parts/veyron_body_bin.js. But in my web.xml I've mapped the url / to my CarServlet class which in turn always output my index.html file. So I just want to ask now how to map URL in Java Servlet as stuffs work in a normal apache server. That's why site works fine on apache server running on localhost.

P.S. I personally don't know much about java servlet.

0 投票
1 回答
873 浏览

java - 在我自己的计算机上托管 Java 服务器,使用“no-ip”进行静态访问

我正在制作安卓游戏和我自己的 JAVA 服务器。我想在我自己的计算机上运行该服务器。我真的不需要在其他任何地方运行它,所以我真的不需要其他解决方案(付费主机等......)。我需要对我的计算机进行静态 IP 访问。目前我正在使用 no-ip.com 来执行此操作,但我无法访问接收到的数据。在我的服务器上,我使用 DatagramSocket.receive() 监听特定端口,而在另一端,我将数据发送到:

我可以看到我将数据发送到正确的地址(相同的地址 DUC 显示给我),但服务器没有捕获该数据。

如果有人有使用 no-ip.com 获取静态 IP 的经验,请提供帮助。

PS 目前我可以通过 iPhone 网络共享访问互联网,所以没有真正的路由器可能是这背后的原因。我已经读到我不需要在手机上进行端口转发,因为我的 ISP 正在为我做 NAT。任何解决方法?

它只是在我的计算机上安装 DUC 就足以使用 no-ip 吗?

获得静态IP的任何更简单(免费)的方法?

0 投票
0 回答
2006 浏览

google-app-engine - CR+LF 在 HTTP 响应标头中更改为 __

查看更新以获取更新的问题

我将AFNetworking'sAFHTTPClient用于我的应用程序的服务调用。我的服务器使用 HTTP 摘要身份验证进行身份验证。服务调用返回 401 HTTP 错误,WWW-Authenticate其响应中包含标头作为质询,如下所示:

connection:didReceiveAuthenticationChallenge:方法永远不会被调用AFURLConnectionOperation,这是NSURLConnectionDelegate在这种情况下,然后会调用我的块集setAuthenticationChallengeBlock:。相反,我只是得到错误:Error Expected status code in (200-299), got 401在我的AFHTTPRequestOperation失败块中。

据我了解,这些是WWW-AuthenticateHTTP 摘要身份验证标头中唯一必需的字段。这与Wikipedia 上此示例中的响应非常相似。我没有任何实际的响应正文,因为无论如何我都没有向用户显示任何 HTML。这应该重要吗?我没有使用不透明字段,但这应该是可选的。我不支持“auth-int”保护质量。除此之外,我不返回ServerDate标题。是否需要其中任何一个?

我在这里做错了什么?

更新:我现在正在客户端记录响应标头(Apple 没有提供一种简单打印我知道的纯文本响应的好方法)。如上所示的响应是在服务器上记录的。结果NSHTTPURLResponse allHeaders是:

Server和标Date头实际上包含在服务器以及其他一些标头中。服务器是 Google App Engine。

但问题似乎是我的\r\nCR+LF 出于某种原因被转换__为,这弄乱了标题语法。调查这是为什么...

更新 2:\n使用_. HTTP 要求是使用 CR+LF+SPACE 来分隔标头中的行。所以现在我的问题变成了,如何在我的HttpServletResponse标题字符串中正确包含这个 CR+LF+SPACE 以便正确编码?服务器响应过程中的编码在哪里被更改,导致_我得到的字符?

这是创建响应的服务器代码:

最后一行是如上所示记录响应的内容,此时格式正确。

回车\r0x0D 和换行\n0x0A 都被更改为 ASCII 下划线_0x5F。

更新 3:我可以确认这不是客户端问题,但一定是由 Google App Engine 服务器引起的。在海报工具中发布服务调用时,我得到了相同的结果。

更新 4:删除 CR+LF 字符并在一行中包含逗号分隔的属性似乎可行,但根据RFC 2047,行的长度不应超过 75 个字符,现在应该是:

'encoded-word' 的长度不得超过 75 个字符,包括 'charset'、'encoding'、'encoded-text' 和分隔符。如果希望编码的文本多于 75 个字符的“编码字”,则可以使用多个“编码字”(由 CRLF SPACE 分隔)。

虽然对多行​​标题字段的长度没有限制,但包含一个或多个“编码字”的标题字段的每一行被限制为 76 个字符。

所以我仍然需要弄清楚如何正确地将 CR+LF 字符放入我的标题字符串中。

更新 5:因此,似乎HTTP 标头的每行允许的最大字符数取决于服务器,并且可能在数千字节范围内,这对于标头来说应该足够了WWW-Authenticate。但这仍然没有回答为什么我的标题字符串中的“\r\n”字符被转换为“__”的问题。这是 Google App Engine 中的错误吗?很难想象我是唯一一个使用 CR+LF+SPACE 在 HTTP 响应中的新行上分隔我的标头属性的人。

0 投票
1 回答
513 浏览

monitoring - visualvm可以发送自动邮件通知吗

我们有一个托管在 Tomcat 6x 上的 Web 应用程序,并希望设置一个服务器健康监控工具,如visualvm,它可以在内存或其他方面出现任何问题时向我们发送“自动电子邮件通知”。由于我们计划不使用 JDK 附带的 visualvm(在我们的环境中为 1.6),

谁能帮助我们知道是否有办法配置自动电子邮件通知?

0 投票
2 回答
122 浏览

java - 我如何在循环中获取字符串

我有 2 节课

头等舱

和二等

为什么当我运行这个 porgram 时,udp 是启动的,但是 String Hasil 没有启动,我如何在语句 While (true) 中获取 String Hasil?

0 投票
0 回答
70 浏览

java - JSONObject 不为空,但似乎为空

我对 Java 的 JSONObject 有很大的问题

所以我有一个错误,发现以下测试代码存在问题:

一切都通过了,但是 toString() 给出了 [null, null],所以当我将数组发送到 fontend 时,它会收到 [null, null](不好)

我做了一些研究,它似乎与 JSONOBject.null 有关,但我不知道为什么会发生

我的 toJSON() 方法是这样的:

0 投票
1 回答
50 浏览

java - EJB 服务器是否支持部署后的错误跟踪?

我是 EJB 的新手。最近我在研究软件可靠性,特别是在企业应用中。我想知道 EJB 应用程序服务器是否支持部署后的错误跟踪。
例如,当您在现实世界中部署您的 EJB 应用程序时,有时,即使概率非常小,您的系统仍然可能因为服务(例如,在事务、并发、... 垂直、水平服务或一般的业务 EJB影响系统性能)。在这种情况下,整个系统可能会停止或不停止。我的问题是 EJB 应用程序服务器是否支持任何错误跟踪 API 来识别和记录有关这些错误的所有信息?

所有关于逻辑编程的错误都无关紧要。

谢谢你,对不起我的英语不好。

0 投票
1 回答
72 浏览

java - I need help on why do i get NPE and how to stop the clip when it is playing

Hi Im desperately looking for a solution on how will I stop my clip when it is already running I've been looking for solutions for how many days now but still I cant find one. Please anyone who knows how help me.

Here is my code

#xA;

The Problem is the song is not stopping when it receives the message "stop" and when it receives another message like "rock2" it will just play it even if there is a song that is already playing. PLEASE HELP me fix this program..

This is my java stacktrace console:

#xA;

It can play all 3 songs at the same time but there is no stopping it and when i try to send 2 same message the server crashes and show the above error.