我想在开发SmartGWT前端时使用python后端。为了使调试正常工作,我想我需要在eclipse中运行dev服务器,这意味着webserver将在eclipse中运行。
我的python(Django)后端需要提供数据请求,我希望它不是跨域问题,但跨域似乎也要求端口匹配。
解决这个问题的最简单方法是什么?一直在考虑使用虚假域设置我的主机文件,然后有两个条目,一个用于数据,一个用于js。但是,这需要在机器上设置第二个IP,因为端口也必须匹配。 如果我希望其他人能够看到我无法使用localhost和我的外部IP的页面,因为他们将无法访问我的本地主机。
是否有一些更简单的设置? 是否有一些简单的代理片段,我可以放入eclipse开发服务器,将数据请求代理到不同的服务器? 其他想法?
答案 0 :(得分:2)
为此我在gwt设置中使用代理servlet。
我正在使用来自jetty util artifact的tomcat代理servlet:
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-util</artifactId>
<version>6.1.22</version>
<scope>runtime</scope>
</dependency>
我的web.xml如下所示:
<servlet>
<servlet-name>JettyProxy</servlet-name>
<servlet-class>org.mortbay.servlet.ProxyServlet$Transparent</servlet-class>
<init-param>
<param-name>ProxyTo</param-name>
<param-value>http://yourserver</param-value>
</init-param>
<init-param>
<param-name>Prefix</param-name>
<!-- will be removed from request -->
<param-value>/prefix/</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>JettyProxy</servlet-name>
<url-pattern>/prefix/*</url-pattern>
</servlet-mapping>
如果你得到一些关于某些_context变量的错误信息,请确保jetty-util.jar在GWT SDK之前的类路径中。
答案 1 :(得分:1)
将-noserver
用于DevMode。见http://code.google.com/webtoolkit/doc/latest/DevGuideCompilingAndDebugging.html#How_do_I_use_my_own_server_in_development_mode_instead_of_GWT's
答案 2 :(得分:0)
最简单的方法是在开发机器上同时拥有后端和前端 对于我的项目,我在前端使用GWT,在后端使用cherrypy(python)。
我在eclipse中设置了两个项目,在开发时我启动了一个用于cherrypy后端的调试器和一个用于GWT前端的调试器。所以我基本上可以同时调试后端和前端。工作真的很好。 python后端和gwt前端之间的通信是通过RequestBuilder(JSON)完成的,这个设置的好处是我可以在没有GWT的情况下直接测试后端的数据通信。
因此开发网址通常类似于:http://localhost:8080/?gwt.codesvr=127.0.0.1:9997
端口8080由我的cherrypy后端使用。