jetty外網訪問
⑴ jetty是否可以應用在Android手機上
jetty可以應用在Android手機上。
Jetty 是一個開源的servlet容器,它為基於java的web容器,例如JSP和servlet提供運行環境。Jetty是使用Java語言編寫的,它的API以一組JAR包的形式發布。開發人員可以將Jetty容器實例化成一個對象,可以迅速為一些獨立運行(stand-alone)的Java應用提供網路和web連接。
⑵ eclipse通過jetty伺服器訪問不到jsp頁面:報404錯誤
404是找不到伺服器,原因一般只有幾種:
1.路徑寫錯了,少了斜杠或者字母大小寫等
2.tomcat沒啟動或者沒配置好即伺服器沒啟動
多試幾次看看
⑶ 有用過jetty的么,說下感覺,和tomcat的區別
我剛用上jetty,覺得沒什麼大的區別。
最明顯的區別:jetty啟動比tomcat快多了。還有網上說的jetty處理靜態資源比tomcat給力
~如果你認可我的回答,請及時點擊【採納為滿意回答】按鈕
~~手機提問的朋友在客戶端右上角評價點【滿意】即可。
⑷ jetty:如何配置jetty使外網可以訪問伺服器
進入路由器的配置界面,找NAT或者埠映射這個選項,將公網上的8080埠映射到192.168.1.100的8080上就可以了。否則外面的訪問是無法進入內網的。
⑸ idea maven jetty啟動服務了 網頁上怎麼訪問
1:Run->Edit Configurations,打開視圖:
2:點擊+按鈕,選擇maven進行配置,如下圖:
3:輸入自己需要配置的信息,Working directory是mawen工程的路徑,Command line為需要設置執行的指令,也就是jetty:run,如下圖:
4:配置好之後點擊Apply,OK,便可以試著啟動web工程了,
⑹ ubuntu jetty部署webapps下部署了多個root.war包怎麼分別訪問
通過Gradle我們可以很方便的使用內置jetty啟動我們的web程序,在本地進行調試。但是在使用的過程中,我發現了幾個問題,導致本地調試的效率大受影響。 如果使用 gradle jettyRun 啟動jetty伺服器後,項目里的靜態資源(jsp,html,JavaScript文...
⑺ eclipse jetty6 下JSP可以訪問到,servlet訪問不到
JSP正常,表明jetty已正常啟動。
servlet訪問不到,就是servlet配置錯了,檢查下:
1、servlet的類名稱對不對。
2、servlet的名稱和servlet的mapping中的名稱是否一致。
3、檢查servlet mapping中的url pattern是否和你訪問的一致。
4、在servlet類的init方法中添加斷點或列印語句檢查servlet是否被初始化。
5、在servlet類的doGet/doPost方法中添加斷點或列印語句檢查是否有請求被傳入。
⑻ jetty的 continuations 有什麼優點
jetty在6.0以後引入了continuations, 那麼什麼是continuations?他有什麼優點?
原始的servlet是一個連接對應一個線程,在短連接情況下都沒什麼問題,但是現在有越來越多的運用是基於長連接的,這樣用戶並發量上去的話,後台的線 程數將會以正比數上升。一個java線程一般佔用64K內存,包括其他的,資源會佔用很多,況且線程調度,線程鎖機制等都很耗CPU。
後來出現一個請求對應一個線程。得益於NIO,連接能夠在請求被處理時分配一個線程。當連接空閑時,那個線程將會被放到線程池中,而連接再次添加到NIO Select Set中去檢測新的請求。這種一個請求對應一個線程的模式能應對更多的用戶連接。對於ajax運用來說,輪循請求去取數據不太好,因為要不斷建立連接,而 且一般連接都沒取到數據,浪費很多連接,所以比較好的辦法是伺服器保持住那個請求,直到伺服器有數據就往客戶端轉送或超時為止。這是一個好技術,但是它同 時也背離了一個請求一個線程的初衷,因為每個客戶端在服務端都有一個請求線程保持著,因此服務端需要為每個客戶端生成一個或多個線程。在大量並發用戶下仍 然有問題。
jetty的continuations正是解決上面的問題而產生的。它的原理是:使用SelectChannelConnector來處理請求,這個類 是基於NIO API上的。因此使它能夠不用消耗每個連接的線程就可以持有開放的連接。使用continuations suspend時,調用的實際是SelectChannelConnector.RetryContinuation.suspend,此時會拋出一個異 常RetryRequest,該異常將傳播到 servlet 以外並通過過濾器鏈傳回,並由 SelectChannelConnector 捕獲。 但是發生該異常之後並沒有將響應發送給客戶機,請求被放到處於等待狀態的 Continuation 隊列中,而 HTTP 連接仍然保持打開狀態。此時,為該請求提供服務的線程將返回 ThreadPool,用於為其他請求提供服務。 暫停的請求將一直保持在等待狀態的 Continuation 隊列,直到超出指定的時限,或者當對 resume() 方法的 Continuation 調用 resume() 時,出現上述任意一種條件時,請求將被重新提交到 servlet(通過過濾器鏈)。事實上,整個請求被重新進行處理,直到首次調用 suspend()。當執行第二次發生 suspend() 調用時,RetryRequest 異常不會被拋出,執行照常進行.判斷的依據是:if (!_pending && !resumed && timeout >= 0) ..throw _retry;其中_pending是指是不是第二次調用了suspend....這樣子,jetty中的thread pool就會有空閑線程來處理其他的請求。
continuations的引入能用很少的線程處理大量的請求。。實驗見下:
public class App {
public static void main(String[] args) throws Exception {
Server server = new Server();
Connector conn = new SelectChannelConnector();
conn.setPort(8080);
server.setConnectors(new Connector[]{conn});
WebAppContext ctx = new WebAppContext();
ctx.setContextPath("/");
ctx.setWar("./webapp");
server.setHandler(ctx);
QueuedThreadPool threadPool = new QueuedThreadPool();
threadPool.setMaxThreads(100);#設置jetty的thread pool最大為100個線程。
server.setThreadPool(threadPool);
DaemonService.bind(server);
server.start();
}
}
DaemonService是一個ServletContextListener,代碼為:
public void contextInitialized(ServletContextEvent sce) {
new Thread(new Runnable() {
public void run() {
while (true) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
#每次列印出當前線程池的線程大小及空閑線程
System.out.println("thread:" + server.getThreadPool().getThreads() + "#idle:" + server.getThreadPool().getIdleThreads());
}
}
}).start();
}
寫一個TestServlet,對應的mapping是/test
public class TestServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
resp.getWriter().write("Test");
resp.getWriter().flush();
}
}
使用ab -c 200 -n 1000 http://localhost:8080/test 測試後結果如下:
thread:2#idle:1
thread:2#idle:1
thread:89#idle:0
thread:100#idle:0
大概還有10多個的thread:100#idle:0
thread:100#idle:0
thread:100#idle:0
thread:99#idle:19
thread:99#idle:88
thread:99#idle:98
thread:99#idle:98
thread:99#idle:98
說明了在並發200個時,jetty線程池裡幾乎沒有空閑線程來處理其他的請求。
ab測試結果為:
Requests per second: 44.54 [#/sec] (mean)
Time per request: 4490.625 [ms] (mean)
當把TestServlet代碼改為Continuation時,同樣是停頓2秒
public class TestServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Continuation continuation = ContinuationSupport.getContinuation(req, null);
continuation.suspend(2000);
resp.getWriter().write("Test");
resp.getWriter().flush();
}
}
使用ab -c 200 -n 1000 http://localhost:8080/test 測試後結果如下:
thread:2#idle:1
thread:7#idle:6
thread:7#idle:6
thread:39#idle:26
thread:42#idle:41
thread:42#idle:36
thread:65#idle:64
thread:65#idle:46
thread:91#idle:90
thread:91#idle:90
thread:91#idle:89
thread:91#idle:90
thread:91#idle:83
說明在並發200個時,jetty線程池中一直都有很多空閑線程
ab測試結果為:
Requests per second: 79.21 [#/sec] (mean)
Time per request: 2525.000 [ms] (mean)
結論:jetty的continuations在短連接上不見得有很大的優勢,但是在長連接或者在後台訪問IO資源(資料庫,網路等)造成的 servlet響應慢問題上,會有很大的優勢,他不會讓一個線程傻傻地在等待資料庫訪問完成,而是會放入線程池去處理其他請求。等資料庫訪問完後,再過來 處理。
servlet 3.0規范已經引入了非同步servlet功能,寫法為:
請求/url/A
AsyncContext ac = request.startAsync();
//...這邊處理具體的資源操作,如db.getConnection()或其他的操作
ac.dispatch();
⑼ 如何在android手機中安裝一個web伺服器啊。。。急求
正式開始
下載並安裝Androphp、Feel ftp和File Zilla
安裝完成後打開AndroPHP,界面如下:
備註:此處為手機內網IP,意味著你只能用內網設備訪問,在以後的博文中會告訴大家如何進行埠映射,從而實現外網也可訪問
看到上圖兩個地址後,其實可以直接點擊,使用手機瀏覽器訪問的界面如下:
備註:
圖片1中大家可能看不到wordpress文件夾,別急下一步教你上傳。
phpMyAdmin的默認用戶名是root或者是你當前手機的ip地址,密碼為空(這信息可以在phpinfo.php中查看)
接下來,就是教大家如何上傳文件到手機,當然前提是你已經在Wordpress上下載好了wordpress安裝包(下載很簡單的,自己去看看吧)或者你自己已經寫好了.PHP網頁,也可以
兩種方法:
1
1
在手機文件管理里,找到根目錄下的WWW文件夾,然後用數據線是上傳文件到這個文件夾就行了,相當於伺服器的根目錄
利用Feel FTP(手機端)和File Zilla(電腦端)進行文件傳輸。這種方法更像是將手機當成伺服器啊(本人拙見,其實只要效果一樣就行,嘿嘿)
步驟一、打開Feel FTP,點擊下方中間按鈕,綠色變成紅色即為打開,上方也顯示出你是否打開了(ps:你可以在設置中關閉無連接是自動退出,不然等會就要打開一次,太麻煩)
步驟二、電腦上打開File Zilla
在主機名處輸入Feel FTP上顯示的地址。例如我的是:
ftp://192.168.1.121
在埠處填寫 :2121,剩下可以都不填寫(因為Feel FTPmore不開啟用戶名和密碼),點擊快速連接
將你的wordpress文件夾從本地上傳到手機根目錄/www(從窗口1拖動到窗口2,即可)
至此兩種文件上傳方法均講述完畢。
5.利用phpMyAdmin創建資料庫,修改wordpress中的wp-config-sample.php文件,之後的步驟和正常安裝wordpress相同,可參考我之後要寫的wordpress安裝教程,此處介紹到此為止
成果演示
接下來,放幾張演示圖
手機上的wordpress展示:
或者自己編寫的.php文件(此處使用的是官方文檔演示)
⑽ jetty啟動了 前台訪問不了
run configurations看看該項目是否加了前綴?如果加了訪問的時候要加前綴,當然你也可以去掉run configurations裡面配置的前綴進行訪問.