使用Grizzly作为Web服务引擎

问题描述 投票:2回答:2

我试图创建一个Grizzly Web服务引擎,但缺少一些元素。

这是我想做的事情:

  • 创建一个Grizzly服务器作为可执行jar(这没关系)
  • 此服务器必须能够查找Web服务存档的文件夹(包含在jar或战争或其他中)
  • 服务器应公开此Web服务。

我所知道的:

  • Web服务可以构建为servlet(似乎Grizzly能够运行servlet但我没有找到任何关于如何加载“.war”或其他内容中包含的外部serlvet的内容)
  • 我试图使用ClassLoader加载以“.jar”导出的JAX-RS2 web服务,但@path绑定不起作用(我可能错过了一些东西)

我想知道的是:

  • 我应该将哪种类型的存档用于Web服务存档?
  • Web服务应该是servlet吗?在这些情况下,如何使用Grizzly动态加载servlet?
  • 我走错了方向吗?

这是我对类加载器所做的

File file  = new File("c:\\Users\\User\\Desktop\\myresource.jar");
 URL url = file.toURI().toURL();  
 URL[] urls = new URL[]{url};
 ClassLoader cl = new URLClassLoader(urls);

URLClassLoader child = new URLClassLoader (urls, this.getClass().getClassLoader());

Class<?> classToLoad = Class.forName ("Test.ExternalWS.MyResource", true, child);
Method method = classToLoad.getDeclaredMethod ("getIt");
Object instance = classToLoad.newInstance ();
Object result = method.invoke (instance);
this.WSInstance = classToLoad.newInstance();
  • 这是Web服务 @Path(“myresource”)公共类MyResource { qazxsw poi }

当我尝试访问localhost时没有任何反应:8080 /....../ myresource。

我尝试了所有可能的网址并设置了断点......从未达到过。

java web-services rest servlets grizzly
2个回答
1
投票

不确定你使用的泽西岛版本。在泽西岛2我用这种方式工作:

@GET
@Produces(MediaType.TEXT_PLAIN)
public String getIt() {
    return "Got it!";
}

可能有更优雅的方式......


0
投票

你在使用Grizzly 1.x或2.x分支吗?

我在Grizzly 1.x开发Grizzly Deployer。如果它符合您的需要,您应该检查源代码

© www.soinside.com 2019 - 2024. All rights reserved.