web-services - 使用 Jetty 配置的 Restlet
问题描述
依赖项:
RestLet 2.3
Jetty 9.4
我的服务器.Java
import org.apache.log4j.Logger;
import org.apache.log4j.xml.DOMConfigurator;
import org.restlet.Component;
import org.restlet.Server;
import org.restlet.data.Protocol;
public class MyServer {
public static void main(String[] a) {
Component component = new Component();
Server server = component.getServers().add(Protocol.HTTP, 5000);
server.getContext().getParameters().add("useForwardedForHeader", "true");
component.getDefaultHost().attach(new MyApplication());
try {
System.out.println("Going to start MyServer");
component.start();
System.out.println("Server started on port " + port);
} catch (Exception e) {
log.error(e, e);
}
}
}
我的应用程序.java
import com.myApp.resources.*;
import org.restlet.Application;
import org.restlet.Restlet;
import org.restlet.routing.Router;
public class MyApplication extends Application {
@Override
public Restlet createInboundRoot() {
Router router = new Router(getContext());
router.attach("/App", MyResource.class);
return router;
}
}
我的资源.Java
import org.restlet.resource.ServerResource;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import java.util.Date;
@Path("/getDetails")
public class MyResource extends ServerResource{
@GET
@Path("/{number}")
public Object getData(@PathParam("number") String number) {
try {
System.out.println("number: " + number);
} catch (Exception e) {
e.printStackTrace();
}
Response.ResponseBuilder builder = Response.ok("Received", MediaType.TEXT_PLAIN);
return builder.build();
}
现在我正在启动我的应用程序,它从以下控制台日志开始......
Going to start MyServer
[main] INFO org.eclipse.jetty.util.log - Logging initialized @291ms to org.eclipse.jetty.util.log.Slf4jLog
[main] WARN org.eclipse.jetty.server.AbstractConnector - Ignoring deprecated socket close linger time
Starting the Jetty [HTTP/1.1] server on port 5000
[main] INFO org.eclipse.jetty.server.Server - jetty-9.4.14.v20181114; built: 2018-11-14T21:20:31.478Z; git: c4550056e785fb5665914545889f21dc136ad9e6; jvm 1.8.0_181-b13
[main] INFO org.eclipse.jetty.server.AbstractConnector - Started ServerConnector@3327bd23{HTTP/1.1,[http/1.1]}{0.0.0.0:5001}
[main] INFO org.eclipse.jetty.server.Server - Started @446ms
Starting com.myApp.server.MyApplication application
Server started on port 5000
现在,当我尝试使用localhost:5000/App/getDetails/5426
. 我无法得到回应。即使我在控制台上收到以下消息......
[qtp586617651-20] WARN org.eclipse.jetty.server.HttpChannel - /App/getDetails/GJ0125 java.io.IOException: Restlet exception
任何帮助,将不胜感激。另外,如果有任何其他实施方式,请告诉我。
解决方案
推荐阅读
- c - 结构程序接受不同格式的输入
- docker - 在 Docker 上向/从主机系统写入和读取文件
- java - 使用 maven 在 WAR 归档的根目录中打包 JAR 文件
- python - 在 folium 弹出窗口中使用 Jpeg 图像
- python - 安装 Glib(不是 GLib)最直接的方法是什么?(Windows 操作系统/用于 python 编码)
- angular - Angular 6 应用程序中的 Angular 数据表抛出错误
- c++ - std::thread 不是全局变量,但在到达创建它的函数末尾时不会超出范围?
- javascript - 基于 ACF 单选按钮输入的功能隐藏 DIV
- json - 使用 Python 将包含枚举值的字典数据写入 JSON 文件
- oop - 如何解析嵌套对象?