內容 |
|
最近收到Linode VPS主機CPU使用率達272.5%的告警通知信:
Your Linode has exceeded the notification threshold (90) for CPU Usage by averaging 272.5% for the last 2 hours.
檢查/var/log/messages可以發現這一行:
Jul 1 07:59:59 www kernel: Clock: inserting leap second 23:59:60 UTC
我先將所有的服務停止(httpd, tomcat, postgresql), 然後依序重啟服務: postgresql->tomcat->httpd
經過不斷的重啟服務,發現只要一啟動Tomcat,CPU使用率就開始飆高
起先以為是記憶體不足所以需要作swap,後來感覺不太像,火大了,乾脆給它 reboot,一次痛快。
沒想到,重開後就好了。
想到一個多喝水的廣告:
多喝水沒事,沒事多喝水...(repeat)
心中OS:
重開機搞定,搞定重開機...(repeat)
不想/能重開機的話,網路建議的解法,可以參考下列這篇:
http://blog.wpkg.org/2012/07/01/java-leap-second-bug-30-june-1-july-2012-fix/
先將ntp停止,然後重新設定系統日期給Linux, 等過了一天之後再重新啟動ntp:
/etc/init.d/ntpd stop
date -s "$(date)"
參考資料:
http://iphone4.tw/forums/showthread.php?t=185855
|
 |
|
Tomcat 7.0的設定方法:
將webapps/host-manager/manager.xml 複製到conf/Catalina/localhost下
在manager.xml中加入下列設定到Context
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.0\.0\.1|114\.\d+\.\d+\.\d+" denyStatus="404" />
兩個以上的IP用"|"分隔,注意到.前面要加上倒斜線(\)。
如:
<Context docBase="${catalina.home}/webapps/manager"
privileged="true" antiResourceLocking="false" antiJARLocking="false">
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.0\.0\.1|114\.\d+\.\d+\.\d+" denyStatus="404" />
</Context>
實際測試,發現不需重啟Tomcat立即生效
參考資料:
http://tomcat.apache.org/tomcat-7.0-doc/config/valve.html#Remote_Address_Filter
|
 |
|
試試看這樣子行不行?
RewriteRule ^/mini-itx.jsp$ /abc.jsp?id=1&name=mini-itx [P]
|
 |
|
這是正常的現象,目前的流程就是這樣
當匿名用戶要發表文章時才導到登入驗證頁面,這時會設定一個returnUrl的參數,系統預設就是發表文章的頁面,省去使用者還要再點選的困擾。
如果要返回別的頁面,則要修改程式碼中對returnUrl設定的參數內容。
您可以研究一下net/jforum/view/forum/common/ViewCommon.java中的下面這個method:
public static String contextToLogin(final String origReturnPath)
|
 |
|
如果是在公司內部環境使用HttpClient 4去連外部網站須走proxy才能通時,
將原來這行:
HttpClient httpclient = new DefaultHttpClient();
修改為(假設proxy是http://10.160.3.88:8080/):
HttpHost proxy = new HttpHost("10.160.3.88", 8080);
HttpClient httpclient = new DefaultHttpClient();
httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);
同時補上宣告:
<% @page import="org.apache.http.HttpHost" %>
<% @page import="org.apache.http.conn.params.ConnRoutePNames" %>
即可。
|
 |
|
在JForum安裝目錄下之/templates/agreement目錄下存有各種語系的會員註冊同意聲明內容
您可以修改terms_zh_TW.txt這個檔案。
|
 |
|
|
 |
|
目前不行。
表格比較複雜,如果沒有適當的關閉,會造成版面跑掉,所以目前不支援。
|
 |
|
可以的,只要在系統管理控制台中,群組->一般使用者->權限->拒絕匿名發表,將該版面取消選取即可。
|
 |
|
今天遇到雙面列印時多了一頁空白頁的問題,後來參考了下列這篇文章後,將第一節的起始頁碼由從0開始改成設為1即可。
Microsoft Word - 空白頁問題 - 總整理
http://club.excelhome.net/thread-577819-1-1.html
|
 |
|
Some hints for you:
1. Change your demo.html as follows:
<#list allCategories as cat>
${cat.category}
<#list cat.getMenus() as menu>
${menu.menu}
</#list>
</#list>
2.Add a collection object like ArrayList for menus in Categories class
package com.menu.entities;
public class Categories {
private int id;
private String category;
private List menus = new ArrayList();
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
public List getMenus() {
retrun menus;
}
public void addMenu(Menu menu) {
this.menus.add(menu);
}
}
|
 |
|
依我的了解,您應該是想要在輸入的內容是空白或是不存在時都顯示一個錯誤訊息來提醒使用者吧?
設計的想法是:
利用一個boolean變數found,初始值為false,然後比對輸入的字串s,如果不是null時程式會利用for迴圈拜訪每個XML文件樹的節點,如果內容等於我們讀取到的分類號時,才將found設為true,並輸出結果,並等待使用者按下Enter才顯示下一筆。
以下是參考範例ReadXMLFile.java:
import java.io.*;
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
import java.util.List;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
public class ReadXMLFile {
public static void main(String[] args) throws IOException {
SAXBuilder builder = new SAXBuilder();
File xmlFile = new File("C:\\JAVA_WORK\\test1.xml");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("輸入分類號:");
String s = br.readLine();
boolean found = false;
if (s != null) {
try {
Document document = (Document) builder.build(xmlFile);
Element rootNode = document.getRootElement();
List list = rootNode.getChildren("ROW");
for (int i = 0; i < list.size(); i++)
{
Element node = (Element) list.get(i);
if (node.getChildText("分類號").equals(s))
{
System.out.println("年度號 : " + node.getChildText("年度號"));
System.out.println("分類號 : " + node.getChildText("分類號"));
System.out.println("案次號 : " + node.getChildText("案次號"));
Scanner input = new Scanner(System.in);
input.hasNextLine();
found = true;;
}
}
} catch (IOException io) {
System.out.println(io.getMessage());
} catch (JDOMException jdomex) {
System.out.println(jdomex.getMessage());
}
}
if (!found) {
System.out.println("查無此分類號!請重新輸入...");
}
}
}
以下是參考用的輸入檔test1.xml:
<ROWSET>
<ROW num="1">
<年度號>0080</年度號>
<分類號>010302</分類號>
<案次號>002</案次號>
</ROW>
<ROW num="2">
<年度號>0078</年度號>
<分類號>011602</分類號>
<案次號>002</案次號>
</ROW>
<ROW num="3">
<年度號>0070</年度號>
<分類號>019302</分類號>
<案次號>011</案次號>
</ROW>
<ROW num="1225">
<年度號>0099</年度號>
<分類號>018719</分類號>
<案次號>111</案次號>
</ROW>
</ROWSET>
|
 |
|
您可以參考一下這個連結的說明:
http://caterpillar.onlyfun.net/Gossip/JavaEssence/WhatClasspath.html
先弄清楚什麼是CLASSPATH後,這個問題您應該就可以自行處理了。
|
 |
|
您的程式需要修改一下,第13行改為兩個倒斜線(\\),為什麼要兩個倒斜線是因為到斜線本身是Java的跳脫字元,否則就會變成\t,這樣就變成跳格字元了。
[code=java; first-line:13]File xmlFile = new File("C:\\JAVA_WORK\\test3.xml");[/code]
第19行改為
[code=java; first-line:19]List list = rootNode.getChildren("ROW");[/code]
即可正常輸出您要的結果。
至於jdom-1.1.2.jar檔的安裝或設定其實主要是要設定在CLASSPATH這個環境變數上,例如您可以將jdom-1.1.2.zip解壓縮,然後將jar檔複製到於C:\JAVA_WORK\lib目錄下,然後在CLASSPATH中加入C:\JAVA_WORK\lib\jdom-1.1.2.jar。
|
 |
|
實際測試上傳一個1GB多的檔案,確實會出現Read timed out的結果:
So far, 1069001476 of 1073742116 bytes have been read.
We are currently reading item 1
So far, 1070000168 of 1073742116 bytes have been read.
We are currently reading item 1
So far, 1071002992 of 1073742116 bytes have been read.
We are currently reading item 1
So far, 1072001684 of 1073742116 bytes have been read.
We are currently reading item 1
So far, 1073000376 of 1073742116 bytes have been read.
一月 16, 2012 2:25:28 上午 org.apache.catalina.core.StandardWrapperValve invoke
嚴重: Servlet.service() for servlet [jsp] in context with path [] threw exception [An exception occurred processing JSP page /fileupload_streaming.jsp at line 65
62: File uploadedFile = new File(saveDirectory, fileName);
63: FileOutputStream uploadedFileStream =
64: new FileOutputStream(uploadedFile);
65: Streams.copy(stream, uploadedFileStream, true);
66: }
67: }
68: }
Stacktrace:] with root cause
java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(Unknown Source)
at java.net.SocketInputStream.read(Unknown Source)
at org.apache.coyote.ajp.AjpProcessor.read(AjpProcessor.java:309)
at org.apache.coyote.ajp.AjpProcessor.readMessage(AjpProcessor.java:364)
at org.apache.coyote.ajp.AjpProcessor.receive(AjpProcessor.java:331)
at org.apache.coyote.ajp.AbstractAjpProcessor.refillReadBuffer(AbstractAjpProcessor.java:576)
at org.apache.coyote.ajp.AbstractAjpProcessor$SocketInputBuffer.doRead(AbstractAjpProcessor.java:1027)
at org.apache.coyote.Request.doRead(Request.java:422)
at org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:290)
at org.apache.tomcat.util.buf.ByteChunk.substract(ByteChunk.java:429)
at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:315)
at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:200)
at org.apache.commons.fileupload.MultipartStream$ItemInputStream.makeAvailable(MultipartStream.java:976)
at org.apache.commons.fileupload.MultipartStream$ItemInputStream.read(MultipartStream.java:886)
at java.io.InputStream.read(Unknown Source)
at org.apache.commons.fileupload.util.Streams.copy(Streams.java:96)
at org.apache.commons.fileupload.util.Streams.copy(Streams.java:66)
at org.apache.jsp.fileupload_005fstreaming_jsp._jspService(fileupload_005fstreaming_jsp.java:125)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.ha.tcp.ReplicationValve.invoke(ReplicationValve.java:333)
at org.apache.catalina.ha.session.JvmRouteBinderValve.invoke(JvmRouteBinderValve.java:219)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:200)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:298)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: An exception occurred processing JSP page /fileupload_streaming.jsp at line 65
62: File uploadedFile = new File(saveDirectory, fileName);
63: FileOutputStream uploadedFileStream =
64: new FileOutputStream(uploadedFile);
65: Streams.copy(stream, uploadedFileStream, true);
66: }
67: }
68: }
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:460)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
root cause
java.net.SocketTimeoutException: Read timed out
java.net.SocketInputStream.socketRead0(Native Method)
java.net.SocketInputStream.read(Unknown Source)
java.net.SocketInputStream.read(Unknown Source)
org.apache.coyote.ajp.AjpProcessor.read(AjpProcessor.java:309)
org.apache.coyote.ajp.AjpProcessor.readMessage(AjpProcessor.java:364)
org.apache.coyote.ajp.AjpProcessor.receive(AjpProcessor.java:331)
org.apache.coyote.ajp.AbstractAjpProcessor.refillReadBuffer(AbstractAjpProcessor.java:576)
org.apache.coyote.ajp.AbstractAjpProcessor$SocketInputBuffer.doRead(AbstractAjpProcessor.java:1027)
org.apache.coyote.Request.doRead(Request.java:422)
org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:290)
org.apache.tomcat.util.buf.ByteChunk.substract(ByteChunk.java:429)
org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:315)
org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:200)
org.apache.commons.fileupload.MultipartStream$ItemInputStream.makeAvailable(MultipartStream.java:976)
org.apache.commons.fileupload.MultipartStream$ItemInputStream.read(MultipartStream.java:886)
java.io.InputStream.read(Unknown Source)
org.apache.commons.fileupload.util.Streams.copy(Streams.java:96)
org.apache.commons.fileupload.util.Streams.copy(Streams.java:66)
org.apache.jsp.fileupload_005fstreaming_jsp._jspService(fileupload_005fstreaming_jsp.java:125)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.23 logs.
Apache Tomcat/7.0.23
實際上傳的檔案大小如下:
-rw-r--r-- 1 tomcat tomcat 1073094361 2012-01-16 02:25 ppsds.pgf
目前我的web.xml中設定如下:
<session-config>
<session-timeout>10</session-timeout>
</session-config>
目前我不確定是否跟session-timeout這個值有關係(10分鐘),不過整個1GB檔案上傳的時間大約有花半小時以上,您可以試試看調整這個參數再測試看看。
|
 |
|