2005/11/23

Is Ajax gonna kill the web frameworks?

The Java eco system has zillions of web frameworks from JSF, Tapestry, Struts, WebWork, Spring WebFlow to things like JSP/JSTL/Velocity etc. There's probably a new web framework born every day in Java some place.

However if the world really does go Ajax or some kinda client technology very Ajax like - will that cause these traditional HTML/HTTP web frameworks to become legacy?

Web frameworks spend most of their time doing things like, dealing with HTTP and HTML, maintaining client side state on the server - handing intermediate form submissions & validation, templating/rendering issues and binding business objects to HTML form controls etc.

These days Ajax has template engines, XPath/XSLT engines, SOAP stacks, XForms implementations and so forth all done on the client side. You can do clever things like hide the JavaScript from your HTML page and use CSS to bind the JavaScript to the markup.

There's even a JavaScript version of Ruby on Rails that runs in the browser! :)

So is the web application of the future going to be static HTML & JavaScript, served up by Apache with Ajax interacting with a bunch of XML based web services (maybe using SOAP, maybe just REST etc)? If so, do we really need a web framework thats focussed on HTTP and HTML, or are we just gonna end up developing a bunch of XML based web services and letting Ajax do all the templating, editing and viewing?

Is this the end of web frameworks as we know it?

http://radio.weblogs.com/0112098/2005/11/16.html

2005/11/12

[Info] Linux 常用指令

殺光folder下所有檔案
rm -rf

解開tar檔到特定folder下
tar xvf project.tar -C

看目前的process
ps -ef

重開機
init 6

檢視Log
tail -f

解開gz檔
tar -zxvf jrockit-70sp5-j2se131-linux32.tar.gz

[Troubleshooting] java.lang.SecurityException: Unable to locate a login configuration

Environment
RedHet Enterprise Linux 2.1
WLS 6.1
Service Pack 7
JRocket 1.4

Problem
As I would like to startup weblogic, it will show this kind of error message
java.lang.SecurityException: Unable to locate a login configuration
at com.ibm.security.auth.login.ConfigFile.getAppConfigurationEntry(ConfigFile.java:221)
at javax.security.auth.login.LoginContext.init(LoginContext.java:171)
at javax.security.auth.login.LoginContext.(LoginContext.java:318)
at weblogic.security.internal.ServerAuthenticate.main(ServerAuthenticate.java:81)
at weblogic.t3.srvr.T3Srvr.run(T3Srvr.java:200)
at weblogic.Server.main(Server.java:35)

Solution
You can check this file http://www.genuitec.com/products/JDK14_WLS61.pdf
Owing to the certified JDK version in WLS 6.1 is 1.3, the JDK version is 1.4

2005/11/11

[Info] Java Performance Tuning

http://www.javaperformancetuning.com/

[Info] WebLogic Server End-of-Life Calendar

You can check this link to ensure your product's status:
WebLogic Server End-of-Life Calendar


If it was retired, BEA do not provide technical support any more.

[Info] Hardware Capacity Management How-To

When you examine performance, a number of factors influence how much capacity a given hardware configuration will need in order to support WebLogic Server and a given application. The hardware capacity required to support your application depends on the specifics of the application and configuration. You should consider how each factor applies to your configuration and application.

Before continuing with this section, you may want to review the Standard Performance Evaluation Corporation which provides a set of standardized benchmarks and metrics for evaluating computer system performance.

2005/11/07

[Troubleshooting] Apache HTTP Server cannot start

[Scenario]
有些時候,可能因為改了某些設定,如修改httpd.conf之後無法正常啟動

[Solution]
此時你可以執行Test Configuration來看錯誤訊息
開始→程式集→Apache HTTP Server→Configure Apache Server→Test Configuration

2005/11/01

[Info] Comparing Web Frameworks Struts, Spring MVC, WebWork, Tapestry & JSF

File Type:PDF
Comparing Web Frameworks Struts, Spring MVC, WebWork, Tapestry & JSF

[Info] Two Approaches to Open New Window

按icon與用File/New/Window的動作不一樣, 按Icon的話, 是起一個新的session, 後者的話, 是share同一個session
這裡有一個link: from JavaWorld
除此之外, 用icon, 與用File/New/Window, 後者可能會有一些問題, 可參考此link:experts-exchange

2005/10/31

[Troubleshooting] SQLException: IO 異常: The Network Adapter could not establish the connection

錯誤訊息
SQLException: IO 異常: The Network Adapter could not establish the connection

成因
1. 資料庫沒有開啟, 所以無法連接上
2. 因為防火牆的原因, 該台連不上DBMS Server, 可先ping看看可否ping的到, ex. ping xxx.xxx.xxx.xxx 1521

2005/10/30

[Troubleshooting] 530 Sorry, no ANONYMOUS access allowed

Scenario
用Server-U架起一個FTP Server,建立username=ftp, password=ftptest
此時用其他的ftp連線工具連線的時候,會出現此錯誤訊息: 530 Sorry, no ANONYMOUS access allowed

原因
因為ftp是保留字,不可以將其當成username,要將username改成其他名字即可

2005/10/28

[Info] JavaMail

Spring Framework also provide an abstract layer for JavaMail.
Here has a reference link:
Sending Email with Spring mail abstraction layer

Here has sample code which write by me:

package albert.guo.util;



import java.io.File;

import java.util.ArrayList;

import java.util.HashMap;



import javax.mail.MessagingException;

import javax.mail.internet.MimeMessage;



import org.springframework.mail.SimpleMailMessage;

import org.springframework.mail.javamail.JavaMailSenderImpl;

import org.springframework.mail.javamail.MimeMessageHelper;



/**

*

* @author Albert

*

*/

public class MailUtil {



private String addr[];

private String subject;

private String text;

private String host;

private String filepath;

private String filename;

private ArrayList fileList;



public MailUtil(String iAddr[], String iSubject, String iText, String iHost){

this.addr = iAddr;

this.subject = iSubject;

this.text = iText;

this.host = iHost;

}



public MailUtil(String iAddr[], String iSubject, String iText, String iHost,

ArrayList iFileList){

this.addr = iAddr;

this.subject = iSubject;

this.text = iText;

this.host = iHost;

this.fileList = iFileList;

}



/*

* 發送mail(不含附加檔案)

*/

public void sendMsg(){

SimpleMailMessage msg = new SimpleMailMessage();

msg.setTo(this.addr);

msg.setSubject(this.subject);

msg.setText(this.text);



JavaMailSenderImpl mailSender = new JavaMailSenderImpl();

mailSender.setHost(this.host);

mailSender.send(msg);

}



/*

* 發送mail(含附加檔案)

*/

public void sendMsgAndAttachment(){

JavaMailSenderImpl sender = new JavaMailSenderImpl();

sender.setHost(this.host);



MimeMessage message = sender.createMimeMessage();



try {

//use the true flag to indicate you need a multipart message

MimeMessageHelper helper = new MimeMessageHelper(message, true);

helper.setTo(this.addr);

helper.setSubject(this.subject);

helper.setText(this.text);



for(int i=0; i<this.fileList.size(); i++){

HashMap attachment = (HashMap)fileList.get(i);

String filepath = (String)attachment.get("filepath");

String filename = (String)attachment.get("filename");

helper.addAttachment(filename, new File(filepath+filename));

}

sender.send(message);

} catch (MessagingException e) {

e.printStackTrace();

}

}



public static void main(String[] args) {

String addr[] = new String [] {"albertg@systex.com.tw"};

//MailUtil mailUtil = new MailUtil(addr, "標題", "內容\n啦啦啦", "mail.systex.com.tw");

//mailUtil.sendMsg();

ArrayList list = new ArrayList();

HashMap hm1 = new HashMap();

hm1.put("filepath", "C:/");

hm1.put("filename","test.doc");

HashMap hm2 = new HashMap();

hm2.put("filepath", "C:/");

hm2.put("filename", "LiveABC.Log");

list.add(hm1);

list.add(hm2);

MailUtil mailUtil = new MailUtil(addr, "標題", "內容\n啦啦啦", "mail.systex.com.tw",
list);

mailUtil.sendMsgAndAttachment();

}



}

 

2005/10/20

[Troubleshoot] JDBC Connection Leak

資料庫連線洩漏原因

在JSP中設定ErrorPage時,發生跳轉,來不及關閉連線
程式的錯誤處理非在finally區塊關閉連線



緩解方式

設定InactiveConnectionTimeoutSeconds時間
最終一定要修復程式中的問題

2005/10/07

[Info] 如何在IE中直接打開WORD等文件

Q.
如何在一个WEB APPLICATION中打開WORD,EXCEL等類型的文件?

ans.

為了讓能在IE流覽器中自動打開的設置:需要在WEB.XML中進行如下的設置:在WEB.XML中添加<mime-mapping>,其中:


<extension>:
文件的副檔名

<mime-type>:
除了該類型檔的可執行檔,WINDOW註冊表中的

/HKEY_CLASSES_ROOT下該類檔的Content
Type
的值一樣.

如能在IE中自動打開DOCXLSPDF檔的配置如下:

<?xml version="1.0" ?>

<!DOCTYPE web-app PUBLIC "-//Sun
Microsystems, Inc.//DTD Web Application 1.2//EN"


"http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">

<web-app>

<mime-mapping>

<extension>doc</extension>

<mime-type>application/msword</mime-type>

</mime-mapping>

<mime-mapping>

<extension>xls</extension>

<mime-type>application/msexcel</mime-type>

</mime-mapping>

<mime-mapping>

<extension>pdf</extension>

<mime-type>application/pdf</mime-type>

</mime-mapping>

</web-app>

2005/09/28

[Troubleshooting] Too many open files

Q.

<2005/9/27 上午09時32分13秒 GMT+08:00> <Critical> <WebLogicServer> <BEA-000204>
<Failed to listen on port 7001, failure count: 2,204, failing for 31,398
seconds, java.net.SocketException: Too many open files>

 



A.
大致上來說,這個問題有可能導因於OS的設定、應用程式在處理IO的時候,沒有正確關閉stream,以致於這些讀取檔案系統的stream一直處於開啟的狀態,最後就把系統所允許的file數給耗盡了。另外,如果在應用程式中開啟了一些socket,沒有正確關閉,也會發生相同的狀況 。這些關閉IO、socket的指令,一定要放在finally的區塊裡面,以確保即使發生exception,還是會被執行到。

We may increase the rlimit for a process by increasing the rlim_fd_max value (e.g. set rlim_fd_max = 4096) on /etc/system and enlarge the default open file number with ulimit -n 4096.
However, if we still find the open file limit for the java process that hosts WebLogic Server cannot excceed 1024,
please edit '${WL_HOME}/common/bin/commEnv.sh'.
COMMENT OUT the last line and add an ulimit statement (e.g. ulimit -n 8192)in the startup scripts.//resetFd

[Troubleshooting] Cannot Find WebappContextListener

Q.為什麼我在佈署我的程式的時候,一直出現無法找到com.bea.wlw.runtime.core.servlet.WebappContextListener此錯誤訊息

Ans.此成因在於工程師可能採用workshop IDE tool來進行ap的開發,然後要部署到basic weblogic server此template,所以會有找不到此class的情形
此時,你只要把web.xml裡頭的此段拿掉即可,此為Workshop IDE Tool自行加上的

<listener>

<listener-class>

com.bea.wlw.runtime.core.servlet.WebappContextListener

</listener-class>

</listener>

2005/09/23

[Info] JDK vs. J2SDK

JDK其實是J2SDK以前的名字。

JDK 1.0 版於 1996 年初release,JDK 1.1 版於 1997 年初release,JDK 1.2 版於 1998 年底release。基於市場行銷的考量,Sun 在 JDK 1.2 版release後將 Java 改名為「Java 2」,將 JDK 改名為「Java 2 Software Development Kit(以下簡稱 J2SDK)」。

然而,雖然改了名字,但是其內在還是沒有變化,其仍舊包含了Java Development kit(JDK)、Java Runtime Environment(JRE),這兩者的差異是:JDK是for programmer所使用,JRE則是提供Java程式運行的環境。