Java AppEngine上的反向代理(restlet 2.1):404-缺少客户端协议
试图让Restlet在AppEngine上运行,用作第三方json/xml服务的反向代理Java AppEngine上的反向代理(restlet 2.1):404-缺少客户端协议,java,google-app-engine,rest,reverse-proxy,restlet,Java,Google App Engine,Rest,Reverse Proxy,Restlet,试图让Restlet在AppEngine上运行,用作第三方json/xml服务的反向代理 AppEngine版本1.5.5 Restlet GAE版本2.1RC1 我在web.xml中设置Restlet如下: <servlet> <servlet-name>RestletServlet</servlet-name> <servlet-class>org.restlet.ext.servlet.ServerServlet</ser
- AppEngine版本1.5.5
- Restlet GAE版本2.1RC1
<servlet>
<servlet-name>RestletServlet</servlet-name>
<servlet-class>org.restlet.ext.servlet.ServerServlet</servlet-class>
<init-param>
<param-name>org.restlet.application</param-name>
<param-value>be.koma.server.MyApplication</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>RestletServlet</servlet-name>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>
这是be.koma.server.MyApplication的实现
public class MyApplication extends Application {
@Override
public Restlet createInboundRoot() {
Router router = new Router(getContext());
String target = "http://otherservice.com/users.xml";
Redirector redirector = new Redirector(getContext(), target, Redirector.MODE_SERVER_OUTBOUND);
router.setDefaultMatchingMode(Router.MODE_FIRST_MATCH);
getConnectorService().getClientProtocols().add(Protocol.HTTP);
router.attachDefault(redirector);
return router;
}
}
从我的浏览器或curl调用otherservice.com可以正常工作
然而,当我调用Restlet时,我得到404,因为找不到客户端协议
Oct 24, 2011 9:36:22 AM org.restlet.engine.log.LogFilter beforeHandle
FINE: Processing request to: "http://127.0.1.1:8888/api/otherservice/users.xml"
Oct 24, 2011 9:36:22 AM org.restlet.engine.component.HostRoute score
FINER: Call score for the "org.restlet.routing.VirtualHost@e3e496a" host: 1.0
Oct 24, 2011 9:36:22 AM org.restlet.engine.component.ServerRouter logRoute
FINE: Default virtual host selected
Oct 24, 2011 9:36:22 AM org.restlet.engine.component.HostRoute beforeHandle
FINE: Base URI: "http://127.0.1.1:8888". Remaining part: "/api/otherservice/users.xml"
Oct 24, 2011 9:36:22 AM org.restlet.routing.TemplateRoute score
FINER: Call score for the "/api" URI pattern: 0.5909091
Oct 24, 2011 9:36:22 AM org.restlet.routing.Router logRoute
FINE: Selected route: "/api" -> be.koma.server.MyApplication@668b1967
Oct 24, 2011 9:36:22 AM org.restlet.routing.TemplateRoute beforeHandle
FINER: 4 characters were matched
Oct 24, 2011 9:36:22 AM org.restlet.routing.TemplateRoute beforeHandle
FINE: New base URI: "http://127.0.1.1:8888/api". New remaining part: "/otherservice/users.xml"
Oct 24, 2011 9:36:22 AM org.restlet.routing.TemplateRoute beforeHandle
FINER: Delegating the call to the target Restlet
Oct 24, 2011 9:36:22 AM org.restlet.routing.TemplateRoute score
FINER: Call score for the "" URI pattern: 0.5
Oct 24, 2011 9:36:22 AM org.restlet.routing.Router logRoute
FINE: The default route was selected
Oct 24, 2011 9:36:22 AM org.restlet.routing.TemplateRoute beforeHandle
FINER: No characters were matched
Oct 24, 2011 9:36:22 AM org.restlet.routing.Redirector handle
INFO: Redirecting via client dispatcher to: http://otherservice.com/users.xml
Oct 24, 2011 9:36:22 AM org.restlet.engine.component.ClientRoute score
FINER: Call score for the "[WAR]" client: 0.0
Oct 24, 2011 9:36:22 AM org.restlet.routing.Router logRoute
FINE: The default route was selected
Oct 24, 2011 9:36:22 AM org.restlet.engine.component.ClientRouter getNext
WARNING: The protocol used by this request is not declared in the list of client connectors. (HTTP/1.1)
Oct 24, 2011 9:36:22 AM org.restlet.engine.log.LogFilter afterHandle
INFO: 2011-10-24 07:36:22 127.0.0.1 127.0.1.1 8888 GET /api/otherservice/users.xml - 404 439 0 28 http://127.0.1.1:8888 Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.1 (KHTML, like Gecko) Ubuntu/11.10 Chromium/14.0.835.202 Chrome/14.0.835.202 Safari/535.1 http://127.0.1.1:8888/test.html?gwt.codesvr=127.0.1.1:9997
有什么想法吗?
关于如何调试的建议?
我缺少什么见解,这看起来很琐碎?对于Restlet邮件列表上的Jerome,额外的init参数可以解决问题:
<servlet>
<servlet-name>RestletServlet</servlet-name>
<servlet-class>org.restlet.ext.servlet.ServerServlet</servlet-class>
<init-param>
<param-name>org.restlet.application</param-name>
<param-value>be.koma.server.MyApplication</param-value>
</init-param>
<init-param>
<param-name>org.restlet.clients</param-name>
<param-value>HTTP HTTPS</param-value>
</init-param>
</servlet>
RestletServlet
org.restlet.ext.servlet.ServerServlet
org.restlet.application
Be、 koma.server.MyAppl软化
org.restlet.clients
HTTP HTTPS
更多信息
<servlet>
<servlet-name>RestletServlet</servlet-name>
<servlet-class>org.restlet.ext.servlet.ServerServlet</servlet-class>
<init-param>
<param-name>org.restlet.application</param-name>
<param-value>be.koma.server.MyApplication</param-value>
</init-param>
<init-param>
<param-name>org.restlet.clients</param-name>
<param-value>HTTP HTTPS</param-value>
</init-param>
</servlet>