问题标签 [com.sun.net.httpserver]
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.
java - sun Httpserver:从Handler访问外部创建的对象
也许是愚蠢的问题:我正在尝试使用 com.sun.net.httpserver 包在 Java 中实现一个小服务器。我正处于服务器编程的最开始,所以可能我遗漏了一些东西。
它应该像这样工作:
- 首先,它创建一个对象(一个 HashMap),该对象将在最近每 24 小时定期更新
- 然后会有一个处理程序来处理收到的请求。这个处理阶段是根据在处理程序之外创建的 HashMap 的内容完成的。
伪代码(非常脏的东西)
问题是:如何让我的处理程序读取 Hashmap?有没有办法将对象作为参数传递给处理程序?
java - com.sun.HttpServer 套接字积压
套接字积压是什么意思?
例如我有网络服务
和网络服务客户端
在服务器上只有 10 个工作线程,并且 backlog 设置为 10,所以可以有 10 个接受的连接和 10 个等待 backlog 的连接,并且任何其他连接都将被拒绝,对吗?
可能不是因为我没有得到 ClientTransportException。
您能否解释一下连接发生了什么以及为什么没有 ClientTransportException。
java - 如何将 HTTPServer 配置为使用内容长度而不是传输编码:分块?
我将 java 的 HTTP Server 对象与 WebServiceProvider 实现的 Web 服务一起使用。我看到无论客户请求如何,答案都是分块的,我需要它具有内容长度。所以我假设问题出在服务器上,而不是网络服务器提供商,对吧?以及如何配置 http 标头以使用内容长度而不是分块?
java - 使用 com.sun.net.httpserver.HttpServer 发送错误响应
我是一名经验丰富的 Java 程序员,但也是一名新手 Web 开发人员。我正在尝试使用HttpServer
JDK 1.6 附带的类来组合一个简单的 Web 服务。从我查看的示例中,HttpHandler
'handle
方法中的一些典型代码如下所示:
我的问题:如果我发送响应标头以指示成功(即响应代码 200)并且可能开始流回数据然后遇到异常,这将需要发送“内部服务器错误”响应代码以及一些错误内容会发生什么? 换句话说,鉴于我已经在遇到异常时向客户端发送了部分“成功”响应,我应该采取什么措施?
java - 下载大数据时 HttpServer 上的 java.lang.OutOfMemoryError
我有 java 6 嵌入式 HttpServer。它有一个句柄,允许客户下载一个大文本文件。问题是当服务器有超过 10 个并发客户端时,我会出现内存不足异常。我很确定问题出在 Http Server 周围。
现在我得到的例外是:
关于 getBytes() 的建议不会改变异常。我试图保持对 byte[] 的静态引用,而不是每次都创建它。我仍然得到同样的例外。
java - 性能:com.sun.net.httpserver.HttpServer vs. jetty
我正在开发一个将发送和接收 JSON 字符串的 java web 应用程序。JSON 通过 jersey 生成并映射到 jaxb 带注释的 pojo。
应用程序本身不是很复杂,但需要在流量大的情况下工作。我尝试了两种方法。第一个 servlet 基于 jetty 作为容器,第二个作为带有 oracles HttpServer 类的控制台应用程序(通过“HttpServerFactory.create(..)”使用 jetty)。
我用 apaches ab 工具测试了这两个版本。在 100 的并发级别上执行 10,000 个请求。令我惊讶的是,控制台应用程序需要的响应时间显着减少,并且传输率更高。我期待相反的结果。
对于小型应用程序来说,一个普通的控制台应用程序真的是一个更好的性能解决方案吗?谢谢。
java - 使用 sun HttpServer 时传递 WebService 回复的“延迟”
我正在编写一个实现 Web 服务的独立应用程序,其端点是使用嵌入式 Sun HttpServer 发布的。我对此有一个奇怪的问题,在特定的部署情况下,服务器处理/发送回复和客户端接收回复之间存在明显的延迟。
让我给出几个场景:
案例 1)工作:服务器在 Eclipse 中运行,它使用 OpenJDK 1.6.0_23 作为运行时。客户端是用axis(不是axis2!)实现的,并且在JBoss 内的Solaris x86 上运行(必须承认我不知道使用的确切Java 版本,但我怀疑是Java 5 版本)。
案例 2)工作:服务器在 Solaris x86 上运行,java 1.6.0_26,客户端在 Eclipse 中运行,OpenJDK 1.6.0_23。
案例 3) 不工作:服务器在 Solaris x86 上运行 java 1.6.0_26,客户端在 Solaris x86 上,轴在 Solaris x86 上(再次怀疑它是 Java 5,而不是 6)。
我想知道我是否会遇到以下 Java 错误,该错误已在 1.6.0_30 中修复(假设 OpenJDK 1.6.0_xx 没有遇到同样的错误)?
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7068416
但如果是这样,那为什么案例 2 会起作用呢?客户端可以以某种方式控制服务器端的 TCP_NODELAY吗?
关于我观察到的确切延迟:我有 2 个 Web 服务,在不同的上下文中发布。例如 2 个不同的 WSDL。客户端(显然)对每个服务都有单独的(轴 1)绑定。对于一项服务,我看到一致的延迟正好是 150 秒,而对于另一项服务,延迟始终是 300 秒。这些价值观会给任何人敲响警钟吗?
马丁
编辑 我现在倾向于Eclipse Generated Web Service Client Extremely Slow中的原因和解决方案。目前无法测试,因为我正坐在酒店房间里,无法访问系统。
java - JRE HttpServer 是否违反了 HTTP 的“expect-continue”语义?
这是我在使用内置 Java和多步身份验证方案时遇到的一些问题的后续帖子。com.sun.net.httpserver.HttpServer
有人暗示,发送较大的数据量会使 Java 客户端无法接收早期的“需要授权”消息(由于 Java 阻塞 I/O)。
这就是 HTTP 定义涉及 100 个状态码(RFC 2616)的“预期继续握手”的原因:
100 (Continue) 状态的目的是允许正在发送带有请求正文的请求消息的客户端在客户端发送请求正文之前确定源服务器是否愿意接受请求(基于请求标头) . 在某些情况下,如果服务器在不查看正文的情况下拒绝消息,则客户端发送正文可能不合适或效率极低。
所以在这种情况下不适合发送数据。服务器...
必须以 100(继续)状态响应并继续从输入流中读取,或以最终状态代码响应。
不幸的是,SunHttpServer
总是以 100 状态码作为响应,而不涉及应用程序。看源码:
当不涉及应用程序时,似乎无法向客户端传达它不适合发送其消息,因此违反了协议(这确实会导致早期关闭连接和管道损坏等问题)。以防万一我遗漏了什么,我最好问问社区这种解释是否正确:)
java - 无法使用 com.sun.net.HTTPServer.httpserver
我正在使用 Eclipse Indigo 和 Java jdk7。
我想创建一个小型网络服务器,但我无法使用 sun 的网络服务器。
当我输入:
我收到以下 Eclipse 错误消息:
我在这里做错了什么?我不必包括任何其他罐子?我吗?
java - Java HttpServer 基本身份验证问题
我有一个 Java 的实现HttpServer
,我用它来测试它的基本功能,这意味着我可以即时调整提供给客户端的内容。我的代码使用的是 apache http 客户端。
我想使用此实现测试一些身份验证,但我遇到了一些问题。我的问题是我的代码从不进行身份验证,发送初始请求并且服务器以 401 响应,但 http 客户端从不响应。它遍历身份验证类型列表,但从不选择 BASIC
如果我使用浏览器连接到相同的 url,我会收到提示,当我提交凭据时它会登录。如果我更改代码以便代码尝试登录到其他服务器,则它是成功的,所以我知道两端都有效!
我已经在客户端和服务器端连接了连接,我可以看到的差异是:
- 当连接成功时,后续请求将作为 POST 而不是 GET 发送。
- 当我的服务器响应时,身份验证标头是 Www 而不是 WWW(因为它工作时)
编辑:
查看 http 代码,区分大小写应该不会导致任何问题。第一个响应是失败的响应,第二个响应是有效的响应:
失败
作品