2

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

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

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

非常感谢!

问候!

4

2 回答 2

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 中,从现有的 jar 存档中转到文件 > 新项目 > 插件开发 > 插件。然后选择添加外部并选择您的 GWT 用户 jar(如果需要,还可以选择 GWT-dev,但这对于仅服务器端的东西不是必需的)。您可以选择是否提取罐子,没关系。清单文件将自动生成并导出所有 GWT 功能。然后,您应该在 servlet 包的清单文件中简单地要求这个包。

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

我希望这有帮助。

于 2011-05-26T11:28:01.697 回答
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 包。

spring的版本是3.1.0,我不知道为什么会这样?我只认为错误是由于 Spring 版本引起的。

谢谢!

于 2011-05-25T11:19:42.353 回答