问题标签 [grizzly]
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.
unix - JerseyTest Grizzly Web 服务器在 Unix 上的行为
我们创建了一个测试套件,为了运行它,我们使用了带有 JerseyTest 框架的嵌入式 Grizzly Web 服务器。
我们从 JerseyTest 扩展了一个自定义类,在它的构造函数中我们创建了 ApplicationDescriptor,然后调用超类 setupTestEnvironment(),它基本上启动了嵌入式 grizzly Web 服务器。
我们很少有测试用例扩展这个自定义类来直接启动 grizzly 服务器。但是,我们不会在代码中的任何地方停止这个嵌入式服务器。
测试用例在 Windows 上运行良好,但在 Unix 上失败,java.net.BindException 端口 9998 正在被另一个进程使用。
很明显,如果我们没有在代码中停止嵌入式 Web 服务器,这些测试也会在 Windows 上失败并出现类似的错误。它们如何在 Windows 上运行良好而在 unix 上失败。这与 Unix 如何产生线程或进程有关吗?
PS 我们还使用 netstat -a | 测试了端口 9998 是否被其他进程使用。grep 9998 但找不到使用该端口的其他进程。
client - 灰熊彗星只推送给一个客户
我想知道,是否可以通过 Comet 将一些 dama 推送到仅一个客户端(连接更多客户端)。
假设我有 400 个客户端连接到服务器,其中只有 20 个需要获取刷新命令。我怎样才能只将此命令发送给那 20 个客户端(我在服务器端有他们的 IP,所以我知道它们是哪一个)。
这是可能的,如果是的话 - 如何?
jersey - JAX-RS Jersey/Grizzly 定义接口资源
按照此处的示例使用 Grizzly 容器部署示例资源。它使用定义为类的资源,而不是我想定义一个带有注释的接口并让资源类实现该接口。
现在的问题是灰熊抱怨它找不到资源:
在 Main 类中,“com.mycompany.pack”是包含实现类的包:
[编辑]:但是在类上添加注释时它也可以工作。如果有办法只在接口级别声明注释。
websocket - GlassFish、Java、Grizzly、WebSockets - 如何开始?
我面临着用 Java 将一些消息推送到我的 Web 应用程序的客户端的必要性。在对这个主题进行了一些阅读之后,我决定使用 websockets 作为一种新兴且有前途的技术,并使用 GlassFish 作为服务器。但是,我发现的所有示例要么非常复杂,要么已经过时,并且无法使用 Grizzly 2 进行编译。
是否有一个非常简单的示例,只需几行代码就可以将“hello, world”之类的内容推送到客户端?
在此先感谢蒂莫菲。
java - WebSockets、GlassFish、Grizzly——无法连接
我正在尝试开始使用 WebSockets,并尝试编写一个简单的应用程序来通过 websoket 来回发送消息。
但是,看起来我尝试创建的套接字永远不会连接。为什么会这样?
下面是我的 WebSockets 类的代码。当.onConnect()
被调用时,它会记录:
我是socket,我是连接的。我连接了吗?- 错误的
更新:在 JavaScript 中,我在其中创建了有问题的套接字,readyState
is 1
,这意味着“套接字打开,通信是可能的”。
java - 注入的 ServetContext 在 Grizzly 上为空,在 TomCat 7 中不为空
我正在开发一个 Jax-RS RESTful 网络服务。虽然我仍在编写代码(在 Eclipse 中),但我希望能够轻松调试,所以我决定创建一个 Maven 项目并使用对 Grizzly Web 服务器的依赖项,这样我就可以启动一个只有 2 个代码行(甚至不必构建 WAR 文件)。
在我的网络服务实现类(带有@Path 的那个)中,我将上下文作为成员变量注入:
当我检查上下文变量是否为 null 时,如果我构建 WAR 文件并将其部署在 TomCat 中,它不会为 null,但是当我启动 Grizzly 服务器并检查它时,它将为 null。启动 Grizzly v1.9 服务器的过程如下:
我试图通过 Google 找到解决方案,有人建议在 web.xml 中启用“load-on-startup”,但这也无济于事。
有任何想法吗?干杯!
json - Tomcat 没有正确使用 JAXB 进行 JSON 编组?
我正在使用 Jersey v1.9.1 开发 RESTful Web 服务。一些方法返回 JSON。当我想调试我的应用程序时,我从一个 grizzly 服务器开始,否则为了生产,我构建一个 war 文件并将其放置在 TomCat v7 安装中。我的项目都是 Maven2 项目。
现在,我注意到对于返回 的方法List<CustomObj>
,其中CustomObj
有适当的 JAXB 注释,即@XmlRootElement(name="CustomObj")
所有相关成员的 getter/setter:
- 使用grizzly,我得到类似的东西
{"CustomObj":[{<fields-of-customObj>},{<fields-of-customObj>},{<fields-of-customObj>}]}
(当列表有 3 个元素时)。用 GSON 解析它可以正常工作。 - 但是,使用TomCat,我得到了:
[{<fields-of-customObj>},{<fields-of-customObj>},{<fields-of-customObj>}]
-> 如您所见,“根”以某种方式丢失了
我的印象是该jersey-json
模块(我包含在我的 Maven2 依赖项中)根本没有在 TomCat 中使用,即使它们应该被使用(它们肯定会在 Grizzly 中使用)。此外,按照此处所述创建我自己@Provider
的 a仅适用于 grizzly,在 TomCat 中永远不会调用该方法。ContextResolver<JAXBContext>
getContext()
TomCat 有什么需要考虑的吗?
干杯!
java - 带有 Jersey 和 Grizzly 的 Hello World(来自用户指南)
我正在查看Jersey User Guide并尝试使用 Jersey Web 服务和嵌入式 Grizzly 服务器设置 Hello World 示例。
我正在阅读第 1 节“入门”。我在 1.1 节中的代码示例编译得很好:
但后来我到了第 1.2 节,“部署根资源”,我应该在这里设置一个嵌入式 Grizzly Web 服务器来测试我的资源:
问题是,这个用户指南似乎已经有一段时间没有更新了,这个类GrizzlyWebContainerFactory
已经不存在了!
我正在使用 Jersery v 1.10 和 Grizzly v 1.9.41。
有人可以帮我重新创建这个例子吗?我知道我可以在容器中运行 Web 服务,我有兴趣通过最简单的嵌入式服务器设置运行它,在我的项目中不需要额外的资源(web.xml 等),只需 2 个类。
java - 哪个 NIO 库(Netty、Grizzly、kryonet,...)用于 Java 中的简单后端服务器实现?
我们的前端是简单的 Jetty(以后可能会被 Tomcat 取代)服务器。通过 servlet,我们提供了一个公共 HTTP API(或多或少 RESTful)来公开我们的产品功能。
在后端,我们有一个 Java 进程,它执行多种维护任务。虽然后端进程通常会在适当的时候执行自己的任务,但有时,前端需要唤醒后端以在后台执行某个任务。
哪个 (N)IO 库最适合这项任务?我找到了 Netty、Grizzly、kryonet 和普通的 RMI。现在,我倾向于说 Netty,它看起来使用起来很简单,而且可能非常可靠。
你们中有人有这种设置的经验吗?你的选择是什么?
谢谢!
http - 如何让 HTTP 100 继续在嵌入式 Grizzly 上为 WebDAV 工作?
我正在使用带有嵌入式 Grizzly servlet 容器 (2.1.7) 的 Milton WebDAV 服务器 (1.6.8),在其默认配置中,PUT 请求(至少由 Cyberduck 发出)不起作用。我已经将问题归结为如何处理 HTTP 100 Continue 的问题(它显然也会影响 Jetty),Milton 邮件列表和错误跟踪器上的一条消息说这是 servlet 容器的错误,它试图巧妙地处理“透明的期望/继续处理”。
是的,透明处理期望的容器继续有效地破坏 Webdav 的 HTTP 安全性。HTTP 使用质询/响应安全模型,许多客户端都依赖它。即,如果执行 PUT,他们将简单地执行未经身份验证的 PUT,并依靠 ExpectContinue 确保在文件上传之前发出挑战。
但是通过对 ExpectContinue 的透明处理,整个文件在 milton API 能够检查当前用户是否经过身份验证并被授权执行操作之前被上传。
根据您支持的客户端和您的用例,这可能是完全不可接受的、令人讨厌的或根本不是问题。
但是,一般来说,我认为您应该尝试找出是否可以禁用 Grizzly 的透明处理,然后在 milton 中重新启用支持。
我能做些什么来禁用灰熊的透明期望/继续处理,这真的是正确的方法吗?另一种方法是在 Milton 中关闭期望/继续处理,但这似乎破坏了 WebDAV 身份验证。
更新:我现在也尝试了 Jetty(8.1.0.RC1),它表现出与 Grizzly 相同的行为:只有关闭期望/继续处理才能 PUT 文件,默认设置不起作用。