如何從不同的Eclipse workspace複製一個已存在的專案呢? 這個問題很簡單,但我常常忘記,導致浪費了不少時間, 所以還是花點時間寫下來 增強一下記憶。
以往很直覺的想法都以為我從workspace下, copy 我要的專案目錄,換成我想要的專案目錄名稱即可,但這招似乎沒用,所以正確的作法步驟應該如下:
-
先切換你的專案workspace,先切換到新命名的workspace
-
再利用選單上的Import功能
-
再選擇 General > Existing Projects into Workspace,按Next
-
然後再選擇你要複製的workspace,再選擇你要的Project,要注意Options一定要勾選Copy projects into workspace,不然他只會指向不會把你想要複製的Project Copy到你的workspace。
-
這樣就完成了作業。
其實真的很簡單,但往往第一步都錯了,所以還是寫下來加深記憶。
最近的網誌都是在解決錯誤訊息,有點像擦屁股大隊長了
這次要排除的是 java.io.CharConversionException: Not an ISO 8859-1 這個問題
在servlet output stream,時發生的,會出現以下錯誤訊息
description The server encountered an internal error () that prevented it from fulfilling this request. exception java.io.CharConversionException: Not an ISO 8859-1 character: 中 javax.servlet.ServletOutputStream.print(ServletOutputStream.java:89) javax.servlet.ServletOutputStream.println(ServletOutputStream.java:242) mypack.HelloWorldExample1.doGet(HelloWorldExample1.java:43) javax.servlet.http.HttpServlet.service(HttpServlet.java:690) javax.servlet.http.HttpServlet.service(HttpServlet.java:803) filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:122) org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:196)
上網查了一下才知,原本寫法是直接使用output stream ,就像
ServletOutputStream out = res.getOutputStream();
res.println(line);
怎麼轉碼都不行(但在Tomcat 4時是OK的,Tomcat 6之後就都會出錯),但如果改用OutputStreamWriter ,先定義好寫出的編碼就可以正常了,使用方式如下:ServletOutputStream stream= res.getOutputStream();
OutputStreamWriter out = new OutputStreamWriter(stream,"UTF-8");
out.write(line);
但要注意,這個物件沒有println可用,所以如要斷行符號可要自己加上去喔!
參考資源: http://www.taixinglife.com/blog-138-89.html
今天花了半天時間在找一個很詭異的問題
就是客戶反應程式安裝在他們的weblogic上之後,就無法送信了
而他們的mail server是不用認證的
前去瞭解,並且開了debug mode 看了一下~發現系統似乎一直卡在這裡
DEBUG: setDebug: JavaMail version 1.4.1
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
DEBUG SMTP: useEhlo true, useAuth false
但自己另外寫一個簡單的寄信程式,就都可以成功到下一個動作
DEBUG SMTP: trying to connect to host “aaa.xxxxx.com.tw”, port 25, isSSL false
最後發現問題在於原先使用的元件取得屬性物件要放入javamail所需要的資料是採用以下方式
Properties properties = System.getProperties();
但如果重新new 一個來使用就能正常運作
Properties properties = System.getProperties();
這個元件好幾年都沒事發生使用在weblogic上就出現怪問題
當然排除後是不是要繼續追查原因呢?…算了~寫下來留作紀念好了
如有網友知道衝突的原因,再麻煩告知一下~感恩喔!
最近在和其它系統介接時,對方提出用HTTP協定POST的方式傳遞XML
以往,在傳遞時都是採用parameter的方式傳遞資料,但這次是要直接使用request content body
呵~會JAVA這麼多年了,第一次採用,原本還想說可行嗎?去查了一下真的可以,所以特別寫下來
以下的程式碼都是採用Apache HttpClient 的方式進行
呼叫端
1. 採用Stream的方式,進行傳遞
File input = new File(strXMLFilename);
PostMethod post = new PostMethod(“http://server/api”);
post.setRequestEntity(new InputStreamRequestEntity(new FileInputStream(input), input.length()));
post.setRequestHeader(“Content-type”, “text/xml; charset=UTF-8”);
2.也可以直接用String的方式進行傳遞data 字串
HttpClient httpclient = new HttpClient();
PostMethod post = new PostMethod(“http://server/api”);
RequestEntity entity = new StringRequestEntity(data, “text/xml”, “UTF-8”);
post.setRequestEntity(entity);
httpclient.executeMethod(post);
至於Server接收端要如何接收呢? 此時就不能採用先前在用的request.getParameter了,我們要改用串流方式
StringBuilder stringBuilder = new StringBuilder();
BufferedReader bufferedReader = null;
try {
InputStream inputStream = request.getInputStream();
if (inputStream != null) {
bufferedReader = new BufferedReader(new InputStreamReader(
inputStream));
char[] charBuffer = new char[128];
int bytesRead = -1;
while ((bytesRead = bufferedReader.read(charBuffer)) > 0) {
stringBuilder.append(charBuffer, 0, bytesRead);
}
} else {
stringBuilder.append(“”);
}
} catch (IOException ex) {
throw ex;
} finally {
if (bufferedReader != null) {
try {
bufferedReader.close();
} catch (IOException ex) {
throw ex;
}
}
}
String body = stringBuilder.toString();
這個body 變數就是我們要的xml文件啦!!
資料來源:
Tomcat是一個不錯的Java Web Appaction,本身也有提供監控執行的東東,雖然陽春,但對於系統效能調校,這些數據是非常有用的。
1.首先,預設這個監控是沒有開啟的,要打開Tomcat的status頁面,要先至Tomcat的conf目錄下的tomcat-users.xml裡面增加使用者資料及權限,調整如下:
<tomcat-users>
<role rolename=”manager”/>
<user username=”youradmin” password=”yourpassword” roles=”manager”/>
</tomcat-users>
這裡的password和username請自行修改,之後重啟tomcat,連結至http://localhost:8080/manager/status再輸入其帳號密碼即可看到現行運行的status(畫面如下)
如果你是要拿這些數據去做一些統計分析圖表,可執行http://localhost:8080/manager/status?XML=true 這樣即可以XML的方式產出(下方參考連結中有一個是在教如何用其它工具做圖表,有興趣請自行延伸閱讀)
當然,這個status頁面所提供的數據是做何用的,我想有些人看到這麼多數據就很頭大,所以以下是參考別人的網站再轉譯,應該有所幫助:
- ThreadInfo: Tomcat中執行序資訊
- Max threads: 執行序最大可以產生的數量
- MinSpareThreads: 執行序最小空閒的數量
- MaxSpareThreads: 執行序最大空閒的數量
- Current thread count: 現行執行中的Thread數量
- Current thread busy: 現行處於busy狀態的執行序數
- RequestInfo: 請求的統計資訊
- Max processing time: 單一個請求的最大處理時間
- Processing time: 請求的處理時間
- Bytes received: 收到的Bytes數
- Bytes sent: 發送的Bytes數
- Request count: 總請求數
- Error count: 發生錯誤的請求數
- Stage Time B Sent B Recv Client VHost Request
- 這些就是你訪問伺服器這個時間點,伺服器正在處理的連接的一些資訊。
- ThreadInfo: Tomcat中執行序資訊 Max threads: 執行序最大可以產生的數量 MinSpareThreads: 執行序最小空閒的數量 MaxSpareThreads: 執行序最大空閒的數量 Current thread count: 現行執行中的Thread數量 Current thread busy: 現行處於busy狀態的執行序數
- RequestInfo: 請求的統計資訊 Max processing time: 單一個請求的最大處理時間 Processing time: 請求的處理時間 Bytes received: 收到的Bytes數 Bytes sent: 發送的Bytes數 Request count: 總請求數 Error count: 發生錯誤的請求數
- Stage Time B Sent B Recv Client VHost Request 這些就是你訪問伺服器這個時間點,伺服器正在處理的連接的一些資訊。
參考資料:
http://www.javaeye.com/problems/36777
http://bbs.51testing.com/thread-113013-1-1.html(有人透過在Linux透過其它製圖工具繪製Tomcat Status圖表,有興趣可參考此連結)
近期留言