Archive

‘JAVA’ 分類過的Archive

如何在Eclipse複製一個已存在的專案

2018年10月24日 尚無評論

如何從不同的Eclipse workspace複製一個已存在的專案呢?  這個問題很簡單,但我常常忘記,導致浪費了不少時間, 所以還是花點時間寫下來 增強一下記憶。

以往很直覺的想法都以為我從workspace下, copy 我要的專案目錄,換成我想要的專案目錄名稱即可,但這招似乎沒用,所以正確的作法步驟應該如下:

  1. 先切換你的專案workspace,先切換到新命名的workspace
  2. 再利用選單上的Import功能
    snap05622
  3. 再選擇 General > Existing Projects into Workspace,按Next
    snap05625
  4. 然後再選擇你要複製的workspace,再選擇你要的Project,要注意Options一定要勾選Copy projects into workspace,不然他只會指向不會把你想要複製的Project Copy到你的workspace。
    snap05626
  5. 這樣就完成了作業。

其實真的很簡單,但往往第一步都錯了,所以還是寫下來加深記憶。

Categories: JAVA, 小技巧, 程式開發 Tags: ,

解決Error java.io.CharConversionException: Not an ISO 8859-1

2012年12月22日 尚無評論

最近的網誌都是在解決錯誤訊息,有點像擦屁股大隊長了

這次要排除的是 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

Categories: JAVA, 程式開發 Tags:

JavaMail使用在weblogic上的注意事項

2012年4月20日 尚無評論

今天花了半天時間在找一個很詭異的問題
就是客戶反應程式安裝在他們的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上就出現怪問題
當然排除後是不是要繼續追查原因呢?…算了~寫下來留作紀念好了
如有網友知道衝突的原因,再麻煩告知一下~感恩喔!

JAVA如何用POST傳遞XML及接收?

2011年6月17日 尚無評論

最近在和其它系統介接時,對方提出用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文件啦!!

資料來源:

Categories: JAVA, 程式開發 Tags: ,

Tomcat監控執行效能

2011年2月16日 尚無評論
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圖表,有興趣可參考此連結)

Categories: JAVA, 系統設定 Tags: ,
分頁: 1 2 3 4 5 6 7 下一頁