我在将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
看起来调用已执行,但无法访问。我不知道这个问题。有人能帮助我吗?我需要解决它以将其与其他服务集成。
非常感谢!
问候!
答案 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版本引起的。
谢谢!