[英]Browser can't connect to Jetty server
我在StackOverflow上看到了另一個類似的問題,但是他得到的答案非常漂亮,荒謬。 “連接到本地主機。” -好吧。
無論如何,問題是我終於讓我的嵌入式Jetty服務器編譯並運行了,問題是因為我在API中使用它,所以我需要源代碼,而不僅僅是依賴。
我正在運行最基本的hello-world代碼,服務器正在啟動,但是我的瀏覽器都無法建立連接。
這是代碼:
try {
httpServer = new Server(8080);
httpServer.setHandler(new JettyPage());
httpServer.start();
} catch(Exception e) {
e.printStackTrace();
}
自然,這是JettyPage.java:
public class JettyPage extends AbstractHandler {
@Override
public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setContentType("text/html;charset=utf-8");
response.setStatus(HttpServletResponse.SC_OK);
baseRequest.setHandled(true);
response.getWriter().println("<h1>Hello world.</h1>");
}
}
控制台中的輸出:
2014-11-07 07:01:05.155:INFO::main: Logging initialized @599ms
2014-11-07 07:01:05.190:INFO:oejs.Server:main: jetty-9.3.0.M1
2014-11-07 07:01:05.215:INFO:oejs.ServerConnector:main: Started ServerConnector@6e5e91e4{HTTP/1.1,[http/1.1]}{0.0.0.0:8080}
2014-11-07 07:01:05.215:INFO:oejs.Server:main: Started @660ms
火狐:
The connection was reset
歌劇:
No data received
鉻:
No data received
---是的,我正在連接到localhost:8080,我也嘗試過:0.0.0.0:8080和127.0.0.1:8080
注意:如果我禁用在端口80上運行的apache服務器,並將Jetty綁定到端口80,則仍然無法連接。
我遇到了完全相同的問題...非常簡單的代碼,即使它是從命令行和IDE編譯並運行的,也無法使瀏覽器連接到Jetty。 最后,將其追溯到不匹配的servlet和Jetty jars(至少我認為是造成問題的原因)。 對我有用的是javax-servlet-api-3.1.0.jar和jetty-all-9.2.8.v20150217.jar。 一旦開始使用這些代碼,則可以在命令行或從NetBeans IDE編譯代碼的情況下進行連接。
對於像我這樣的原始對象,大多數在線命令行編譯示例都使用Linux / Unix路徑分隔符(“:”)。 我花了幾分鍾才弄明白在Windows計算機上我需要另一台(“;”):
javac -cp。; javax.servlet-api-3.1.0.jar; jetty-all-9.2.8.v20150217.jar HelloWorld.java
希望能有所幫助。
如果您完全按照HelloWorld的示例進行操作,則將得到響應。
您的運行時環境仍然存在問題。
這是您正在運行的Windows嗎? 如果是這樣,請嘗試將端口設置為8080以外的其他端口(嘗試38080),因為您可能已經在該端口上安裝了某些端口,在這種情況下Windows不會拋出錯誤或警告。 (在其他操作系統上,這將導致綁定異常)
您是否有任何指示錯誤或警告的日志記錄輸出?
即使在啟動服務器或提供某些內容時出錯,控制台上也應該有大量的日志輸出。
如果要啟用非常詳細的日志記錄,可以將-Dorg.eclipse.jetty.LEVEL=DEBUG
添加到Java執行中。
Windows版本
> java -Dorg.eclipse.jetty.LEVEL=DEBUG -cp .;servlet-api.jar;jetty-all.jar HelloWorld
Linux / OSX / Unix版本
$ java -Dorg.eclipse.jetty.LEVEL=DEBUG -cp .:servlet-api.jar:jetty-all.jar HelloWorld
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.