集成GWT和OSGi的问题

时间:2011-05-24 12:13:51

标签: gwt osgi equinox

我在将GWT集成到OSGi Equinox容器时遇到问题。入口点网页运行。我看到了我的第一页。但是,当我单击按钮实现服务器调用时,它不会运行。 我使用Firefox,我有firebug。然后,当我看到网络字段时,我收到下一条消息:

Content-Type    text/html; charset=iso-8859-1
Cache-Control   must-revalidate,no-cache,no-store
Content-Length  1431
Server  Jetty(6.1.x)

Host    localhost
User-Agent  Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1
Accept  text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language es-es,es;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding gzip, deflate
Accept-Charset  ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive  115
Connection  keep-alive
Content-Type    text/x-gwt-rpc; charset=utf-8
X-GWT-Permutation   CCF6A1341D371C4123AE827BC29EA602
X-GWT-Module-Base   http://localhost/zbapp/zb_app/
Referer http://localhost/zbapp/ZB_app.html
Content-Length  174
Pragma  no-cache
Cache-Control   no-cache

发布方法:

7|0|6|http://localhost/zbapp/zb_app/|A31E1254E17F9AD731856D6BE34124A2|main.java.com.gwt.app.client.GreetingService|greetServer|java.lang.String/2004016611||1|2|3|4|2|5|5|6|6|

并回复:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
<title>Error 404 ProxyServlet: /zbapp/zb_app/greet</title>
</head>
<body><h2>HTTP ERROR 404</h2>
<p>Problem accessing /zbapp/zb_app/greet. Reason:
<pre>    ProxyServlet: /zbapp/zb_app/greet</pre></p><hr /><i><small>Powered by     Jetty://</small></i><br/>                                                                                         
</body>
</html>


Problem accessing /zbapp/zb_app/greet. Reason:
ProxyServlet: /zbapp/zb_app/greet

看起来调用已执行,但无法访问。我不知道这个问题。有人能帮助我吗?我需要解决它以将其与其他服务集成。

非常感谢!

问候!

2 个答案:

答案 0 :(得分:2)

我不知道如何使用Spring,但我已经将一个OSGi包与GWT集成在一起,希望这可以帮助你做到这一点。

看看这个:http://bryanhunt.wordpress.com/2010/05/14/osgi-as-a-web-application-server/。本教程将逐步介绍如何将servlet集成到OSGi包中。然后看看这个http://wiki.eclipse.org/Google_Web_Toolkit_and_Equinox。这个链接几乎解释了将GWT集成到OSGi包中需要知道的一切,除了如何包装GWT jar之外,这很容易做到:

在eclipse中,去文件&gt;新项目&gt;插件开发&gt;来自现有jar存档的插件。然后选择add external并选择你的GWT用户jar(如果你想要的话选择GWT-dev,但这对于服务器端的东西来说不是必需的)。您可以选择是否提取罐子,这没关系。将自动生成清单文件,并将导出所有GWT功能。然后,您应该只需要在servlet包的清单文件中包含此包。

(最后)教程的第二个小问题是他声明你需要删除导出javax.servlet的GWT包的清单(你刚从jar中创建的那个)中的行。*这是正确的,但是当你这样做时,你还应该将行Require-Bundle: javax.servlet添加到GWT包的清单中,否则你将获得一个类加载器异常。

我希望这会有所帮助。

答案 1 :(得分:0)

好吧,我解决了第一个问题,我实现了!我在文件plugin.xml上添加了扩展标志:

<extension point="org.eclipse.equinox.http.registry.servlets">
    <servlet alias="/zbapp/zb_app/greet" class="main.java.com.gwt.app.server.GreetingServiceImpl" />
</extension> 

但是,我的错误更改为500.原因是:

java.lang.NoClassDefFoundError: org/springframework/asm/ClassVisitor

但是我已经部署了org.springframework.asm包,并且我已经在Import-Packages标签org.springframework.asm包中添加了。

春天的版本是3.1.0,我不知道为什么会这样?我只想到错误是由Spring版本引起的。

谢谢!