![](/img/trans.png)
[英]Jersey restful web service on grizzly server, client javascript
[英]Use Grizzly as a web service engine
我正在嘗試創建一個Grizzly Web服務引擎,但是缺少一些元素。
這是我想做的:
創建一個Grizzly服務器作為可執行jar(可以)
該服務器必須能夠查看Web服務檔案的文件夾(包含在jar或war或其他文件中)
服務器應公開此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();
這是網絡服務
@Path(“ myresource”)公共類MyResource {
@GET @Produces(MediaType.TEXT_PLAIN) public String getIt() { return "Got it!"; }
}
當我嘗試到達localhost:8080 /....../ myresource時,什么都沒有發生。
我嘗試了所有可能的網址,並設置了一個斷點……從未達到。
不確定您使用的是哪個Jersey版本。 在《澤西島2》中,我這樣做是這樣的:
File file = new File("/path/resource1.jar");
URL url = file.toURI().toURL();
URL[] urls = new URL[]{url};
ClassLoader cl = new URLClassLoader(urls, Main.class.getClassLoader());
ResourceConfig rc = new ResourceConfig()
.setClassLoader(cl)
.files("/path/resource1.jar");
HttpServer httpServer = GrizzlyHttpServerFactory.createHttpServer(
BASE_URI, rc);
可能會有更優雅的方式...
您正在使用Grizzly 1.x或2.x分支嗎?
我在Grizzly 1.x中開發了Grizzly Deployer。 您應該檢查源代碼是否滿足您的要求
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.