2005年02月04日
 
2.实现接口方法或者覆盖实现超类的方法。
Jbuilder只在新建Class的时候,通过选择需要实现的接口,才会自动生成好代码框架。
在代码编辑区里不再提供自动生成代码。
a.Jbuilder,主菜单–>File–>New –>general–>Class
选择好需要实现的接口或者Abstract Class,点ok,Jbuider自动生成好代码框架。
如果你把代码删除掉,想通过菜单选项再来生成代码框架的话,Jbuilder就不提供这样的功能了,
要么自己手工打一遍,要么重新New–〉Class。
Eclipse在这方面做得就比Jbuilder好得多了。
b.Eclipse,新建Class。可以同时选择super class和需要实现的接口。
 
点击完成,则生成了下面的代码框架。
 
 
 
 
而且还可以在编辑器区内通过右键菜单–〉源代码–〉覆盖/实现方法里,选择需要生成的代码框架。
 

 
 
 
通过这样的方式,借助ide为我们生成好代码框架,省下不少打字的辛劳,我们需要作的就是编写这些方法的具体县实现的代码。
 
(我使用的jdk为:jdk1.5.0_01,环境变量JAVA_HOME=D:\jdk1.5.0_01,
path=D:\jdk1.5.0_01\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;)
1.下载:http://www.caucho.com/download/resin-3.0.10.zip
解压到D:\resin-3.0.10
2.运行setup.exe。指定resin Home:D:\resin-3.0.10
3.运行httpd.exe.
4.修改端口为80:打开D:\resin-3.0.10\conf\resin.conf,
找到”8080″,修改为80,保存,重新启动resin。
    <!– The http port –>
    <http server-id=”" host=”*” port=”80″/>
5.发布webapp:   
在resin.conf的结尾处: <host id=”" root-directory=”.”>
      <!–
         – configures an explicit root web-app matching the
         – webapp’s ROOT
        –>
      <web-app id=’/’ document-directory=”webapps/ROOT”/>
    </host>
修改为:
 <host id=”" root-directory=”.”>
      <!–
         – configures an explicit root web-app matching the
         – webapp’s ROOT
        –>
      <web-app id=’/’ document-directory=”webapps/ROOT”/>
      <web-app id=’/lizongbo’ document-directory=”E:/lizongbo/oscachedemo/test”/>
    </host>
重新启动resin,访问 http://localhost/lizongbo/ 就可以看到效果。
6.配置虚拟主机:
在文件结尾处</server>之前加上下面一段:
 
    <host id=”lizongbo.myresintest.com” root-directory=”.”>
      <web-app id=’/’ document-directory=”webapps/ROOT”/>
      <web-app id=’/lizongbo’ document-directory=”E:/jb/oscachedemo/test”/>
    </host>
保存文件。
在c:\windows\system32\drivers\etc\host文件里加上下面一行:
lizongbo.myresintest.com   127.0.0.1
 
保存host文件。
重新启动resin,重新打开浏览器。输入http://lizongbo.myresintest.com/lizongbo/
就可以看到虚拟主机配置成功。
 
7.发布我的webapp的时候遇到了下面的错误信息。
org.xml.sax.SAXNotRecognizedException: http://xml.org/sax/features/validation
查找资料http://www.google.com/search?hl=zh-CN&inlang=zh-CN&newwindow=1&q=resin+org.xml.sax.SAXNotRecognizedException&lr=,(参考:http://www.slamb.org/svn/repos/projects/axamol/sax-pipeline/README
需要新建一个 jaxp.properties, 内容如下:
javax.xml.parsers.SAXParserFactory: org.apache.xerces.jaxp.SAXParserFactoryImpl
保存文件到$JAVA_HOME/jre/lib/下面
接下来可能会出现下面的错误信息:
javax.xml.parsers.FactoryConfigurationError: Provider org.apache.xerces.jaxp.SAX
ParserFactoryImpl could not be instantiated: java.lang.NullPointerException
因此还需要把xercesImpl.jar复制到D:\jdk1.5.0_01\jre\lib\endorsed下面(没有这个目录就创建这个目录)
重新启动resin,我的webapp启动成功了。
访问 http://lizongbo.myresintest.com/mywebapp/,页面正常出现。
b.另外一种更简单的解决方法,不需要修改jdk的配置
((此方法没有测试过,请参考http://www-900.ibm.com/developerWorks/cn/webservices/ws-axisfaq/index.shtmlhttp://www.caucho.com/quercus/faq/question.xtp?question_id=295)):
    <host id=”lizongbo.myresintest.com” root-directory=”.”>
      <web-app id=’/’ document-directory=”webapps/ROOT”/>
      <web-app id=’/lizongbo’ document-directory=”E:/jb/oscachedemo/test”>
      <system-property javax.xml.transform.TransformerFactory=”org.apache.xalan.processor.TransformerFactoryImpl”/>
<system-property javax.xml.parsers.DocumentBuilderFactory=”org.apache.xerces.jaxp.DocumentBuilderFactoryImpl”/>
<system-property javax.xml.parsers.SAXParserFactory=”org.apache.xerces.jaxp.SAXParserFactoryImpl”/>
<system-property org.xml.sax.driver=”org.apache.xerces.parsers.SAXParser”/>
</web-app>
    </host>
 
8.resin支持二级域名。
同6,主机名和doc路径,都使用正则表达式。
(例子:<host url-regexp=’^([^/]*).test.com’ app-dir=’web/$1′/>)
    <host id=”^(*).lizongbo.com” root-directory=”.”>     
        <!–
         – configures an explicit root web-app matching the
         – webapp’s ROOT
        –>
      <web-app id=’/’ document-directory=”webapps/ROOT”/>
      <web-app id=’/lizongbo’ document-directory=”E:/jb/oscachedemo/test”/>
    </host>
再配合上泛域名解析,就非常方便了。
(在host文件里加上
127.0.0.1   aaa.lizongbo.com
127.0.0.1   bbb.lizongbo.com
然后访问这两个主机名,可以看见虚拟主机解析成功。
)
9.在Jbuilder2005中支持resin.
http://www.caucho.com/projects/index.xtp 下载 http://www.caucho.com/projects/jbuilder/resin-jbuilder-7.jar
保存到 JBuilderHome/lib/ext下。
(Jb2005不支持)
 
10.一个host配置参考:
 
 <host id=’www.lizongbo.com’>
  <welcome-file-list>index.jsp, index.htm, index.html </welcome-file-list>
  <error-log id=’logs/lizongbo.com.log’/>
   <doc-dir>E:/jb/lizongbo/webapp</doc-dir>
   <web-app id=’/'>
       <classpath id=’WEB-INF/classes’
                 source=’WEB-INF/classes’
                 compile=’false’/>
<servlet-mapping url-pattern=’/servlet/*’ servlet-name=’invoker’/>
<servlet-mapping url-pattern=’*.jsp’ servlet-name=’jsp’/>
<servlet-mapping url-pattern=’*.html’ servlet-name=’jsp’/>

    
    <session-config>
   <session-max>4096</session-max>
   <session-timeout>30</session-timeout>
   <enable-cookies>true</enable-cookies>
   <enable-url-rewriting>true</enable-url-rewriting>
    </session-config>
   </web-app>
 </host>

11.与IIS整合。
安装好(WinXP+SP2下的)IIS,运行D:\resin-3.0.10\setup.exe
点Apply即可。
我的电脑–>右键–>管理–>Internet信息服务–>网站–>默认网站,
右键–〉属性–>ISAPI筛选器–>添加
筛选器名称:Resin_3.0.10
可执行文件:C:\Inetpub\scripts\isapi_srun.dll


确定,然后重新启动iis。再启动resin.此时就可以访问
http://localhost/index.jsp
如果没有启动resin。
将得到下面的错误信息:

Can’t contact Servlet Runner at localhost:6802

利用javaIDE快速生成代码的几种方法。
尽量借助java IDE帮我们自动生成一些标准的代码和代码框架,会给我们的开发省下很多力气,也减少很多枯燥的打字工作,并且减少代码出错的可能性,使得代码编写人员将更多精力用来关注业务逻辑的实现。
1.普通的JavaBean的代码生成,
a.在Jbuilder中,切换面板到Bean–>Properties,可以快速增加Class的成员变量,
并且快速生成对应的set/get方法。
 
 
 
b.在Eclipse中,则需要先自己写好Classd的成员变量,然后再代码编辑区里点右键, 选择“源代码”–>生成”Getter”和”Setter”,
然后需要需要生成的相应的方法。
 


 
 
 
 
 
 

java对文件名的几个操作,获取文件扩展名,去掉扩展名

    /**
     * Return the extension portion of the file’s name .
     *
     * @see #getExtension
     */
    public static String getExtension(File f) {
        return (f != null) ? getExtension(f.getName()) : “”;
    }

    public static String getExtension(String filename) {
        return getExtension(filename, “”);
    }

        public static String getExtension(String filename) {
        return getExtension(filename, “”);
    }

    public static String getExtension(String filename, String defExt) {
        if ((filename != null) && (filename.length() > 0)) {
            int i = filename.lastIndexOf(‘.’);

            if ((i >-1) && (i < (filename.length() – 1))) {
                return filename.substring(i + 1);
            }
        }
        return defExt;
    }

    public static String trimExtension(String filename) {
        if ((filename != null) && (filename.length() > 0)) {
            int i = filename.lastIndexOf(‘.’);
            if ((i >-1) && (i < (filename.length()))) {
                return filename.substring(0, i);
            }
        }
        return filename;
    }

tomcat5.5.x 配置记录。
 
1.下载:
http://www.eu.apache.org/dist/jakarta/tomcat-5/
http://www.apache.org/dist/jakarta/tomcat-5/v5.5.x/bin/jakarta-tomcat-5.5.x-admin.zip
http://www.apache.org/dist/jakarta/tomcat-5/v5.5.x/bin/jakarta-tomcat-5.5.x-compat.zip
http://www.apache.org/dist/jakarta/tomcat-5/v5.5.x/bin/jakarta-tomcat-5.5.x.zip
http://www.apache.org/dist/jakarta/tomcat-5/v5.5.x/bin/jakarta-tomcat-5.5.x-deployer.zip
jakarta-tomcat-5.5.x.zip
jakarta-tomcat-5.5.x-compat.zip
jakarta-tomcat-5.5.x-admin.zip
(Tomcat 默认是没有内置admin模块了
Tomcat’s administration web application is no longer installed by default. Download and install the “admin” package to use it. )
都解压到同一个目录下面。比如:D:\jakarta-tomcat-5.5.x\
(如果使用jdk1.4,才需要compat.zip用jdk1.5就可以免了这个。)
 
2.修改jakarta-tomcat-5.5.x\conf\tomcat-users.xml.
添加管理员账号lizongbo,密码为lizongbopass.
新xml如下:
<?xml version=’1.0′ encoding=’utf-8′?>
<tomcat-users>
  <role rolename=”tomcat”/>
  <role rolename=”role1″/>
  <role rolename=”manager”/>
  <role rolename=”admin”/>
  <user username=”tomcat” password=”tomcat” roles=”tomcat”/>
  <user username=”role1″ password=”tomcat” roles=”role1″/>
  <user username=”both” password=”tomcat” roles=”tomcat,role1″/>
  <user username=”lizongbo” password=”lizongbopass” roles=”admin,manager”/>
</tomcat-users>
 
3.修改jakarta-tomcat-5.5.x\conf\server.xml来解决编码问题。
(给Connector 添加URIEncoding参数,参考http://blog.csdn.net/darkxie/archive/2004/10/25/TOMCATAPP.aspx)
(可以设置成GB18030)
    <Connector port=”8080″
               maxThreads=”150″ minSpareThreads=”25″ maxSpareThreads=”75″
               enableLookups=”false” redirectPort=”8443″ acceptCount=”200″
               connectionTimeout=”20000″ disableUploadTimeout=”true” URIEncoding=”GBK”
               compression=”on” compressionMinSize=”2048″
      noCompressionUserAgents=”gozilla, traviata”
      compressableMimeType=”text/html,text/xml”/>
 
    <Connector port=”8009″
               enableLookups=”false” redirectPort=”8443″ protocol=”AJP/1.3″ URIEncoding=”GBK”/>
 

4.启用支持gzip压缩.
(http://www.linuxaid.com.cn/forum/showdoc.jsp?l=1&i=81169)
添加下列属性
 compression=”on”
      compressionMinSize=”2048″
      noCompressionUserAgents=”gozilla, traviata”
      compressableMimeType=”text/html,text/xml”
 
5.设置虚拟主机。
在jakarta-tomcat-5.5.x\下建立文件夹vhost\www.mydomain.com。
然后修改jakarta-tomcat-5.5.x\conf\server.xml
 
<Engine defaultHost=”localhost” name=”Catalina”>
      <Host appBase=”vhost/www.mydomain.com” name=”www.mydomain.com“>
      </Host>
      <Host appBase=”webapps” name=”localhost”>
      </Host>
      <Realm className=”org.apache.catalina.realm.UserDatabaseRealm”/>
    </Engine>
 
6.添加数据库驱动,更新mail.jar和actiovation.jar
复制mysql-connector-java-3.0.16-ga-bin.jar,pg74.215.jdbc3.jar到 jakarta-tomcat-5.5.x\common\lib\
还有javamail 1.3.2的mail.jar,jaf-1_0_2的 activation.jar
msSQl 2000 JDBC sp3,msbase.jar,msutil,jar,mssqlserver.jar
 
 
7.配置SSL
参考 http://jakarta.apache.org/tomcat/tomcat-5.5-doc/ssl-howto.html
D:\j2sdk1.4.2_06\bin>%JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA
输入keystore密码:  lizongbossl
您的名字与姓氏是什么?
  [tomcat5.5.x]:  tomcat5.5.x
您的组织单位名称是什么?
  [jakarta]:  jakarta
您的组织名称是什么?
  [apache]:  apache
您所在的城市或区域名称是什么?
  [hzcity]:  hzcity
您所在的州或省份名称是什么?
  [gdp]:  gdp
该单位的两字母国家代码是什么
  [CN]:  CN
CN=tomcat5.5.x, OU=jakarta, O=apache, L=hzcity, ST=gdp, C=CN 正确吗?
  [否]:  y
 
输入<tomcat>的主密码
        (如果和 keystore 密码相同,按回车):
(必须密码一致,因此直接回车)
然后再把userhome(例如:C:\Documents and Settings\lizongbo\)下的.keystore复制到
tomcat的conf\目录下。
 (例如:D:\jakarta-tomcat-5.5.x\conf\.keystore )
配置jakarta-tomcat-5.5.x\conf\server.xml
加上
    <Connector port=”8443″
               maxThreads=”150″ minSpareThreads=”25″ maxSpareThreads=”75″
               enableLookups=”false” disableUploadTimeout=”true”
               acceptCount=”100″ scheme=”https” secure=”true”
               clientAuth=”false” sslProtocol=”TLS”
           keystoreFile=”conf/.keystore”
           keystorePass=”lizongbossl”> <!–与先前设置的密码一致–>
    </Connector>
8.禁止文件目录列表,
修改jakarta-tomcat-5.5.x\conf\web.xml,把listing设置为false
 
    <servlet>
        <servlet-name>default</servlet-name>
        <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
        </init-param>
        <init-param>
            <param-name>listings</param-name>
            <param-value>true</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
 
 9.指定了自己的javaEncoding
(参考 http://gceclub.sun.com.cn/staticcontent/html/sunone/app7/app7-dg-webapp/ch6/ch6-4.html )

    <servlet>
        <servlet-name>jsp</servlet-name>
        <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
        <init-param>
            <param-name>fork</param-name>
            <param-value>false</param-value>
        </init-param>
                <init-param>
            <param-name>javaEncoding</param-name>
            <param-value>GB18030</param-value>
        </init-param>
        <init-param>
            <param-name>xpoweredBy</param-name>
            <param-value>true</param-value>
        </init-param>
        <load-on-startup>3</load-on-startup>
    </servlet>
 10.添加rar,iso等的mime-type映射
避免在浏览器里直接打开。
<mime-mapping>
<extension>mht</extension>
<mime-type>text/x-mht</mime-type>
</mime-mapping>
<mime-mapping>
        <extension>rar</extension>
        <mime-type>application/octet-stream</mime-type>
    </mime-mapping>
    <mime-mapping>
        <extension>iso</extension>
        <mime-type>application/octet-stream</mime-type>
    </mime-mapping>
    <mime-mapping>
        <extension>ape</extension>
        <mime-type>application/octet-stream</mime-type>
    </mime-mapping>
    <mime-mapping>
        <extension>rmvb</extension>
        <mime-type>application/octet-stream</mime-type>
    </mime-mapping>
    <mime-mapping>
        <extension>ico</extension>
        <mime-type>image/x-icon</mime-type>
    </mime-mapping>
10.1对html静态页面设置编码
<!–  修改下面两行以支持静态超文本的自动编码 
  –>
 
 <mime-mapping>
  <extension>htm</extension> 
  <mime-type>text/html;charset=gb2312</mime-type> 
  </mime-mapping>
 <mime-mapping>
  <extension>html</extension> 
  <mime-type>text/html;charset=gb2312</mime-type> 
  </mime-mapping>
  </web-app>
 
11.添加welcome-file-list,并调整顺序。
 <welcome-file-list>   
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
    </welcome-file-list>

新开张的blog,用来记录自己的编程学习经历和经验。

主要开发环境如下:
1.操作系统:Microsoft Windows XP + Service Pack 2 Red Hat Enterprise Linux 3 Update 4 AS (x86)
2.浏览器  Internet Explorer 6.0.2900.2180FireFox 1.0
3.Java servlet 容器: Apache Tomcat 5.5.x, resin3.1 ,Servlet 2.4
4.JDK版本:
    a. jrockit-j2sdk1.4.2_04
java version “1.4.2_04″
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_04-b05)
BEA WebLogic JRockit(TM) 1.4.2_04 JVM  (build ari-31788-20040616-1132-win-ia32,
Native Threads, GC strategy: parallel)

    b.JDK1.5.01
java version “1.5.0_01″
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_01-b08)
Java HotSpot(TM) Client VM (build 1.5.0_01-b08, mixed mode, sharing)

  c.JDK1.4.2.06
java version “1.4.2_06″
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_06-b03)
Java HotSpot(TM) Client VM (build 1.4.2_06-b03, mixed mode)

JAVA IDE :Borland Jbuilder 2005,eclipse3.0.1

DATABASE:。mysql4.1.19,Postgresql8.0(7.4.6)
除了操作系统和IE之外,其余的相关工具都是跨平台的,同时支持Windows和Linux.

基本保证所写代码对在上述环境中产生的效果一样。


其它学习工具有:XMLSpy® 2005 ,PowerDesigner

                         lastupdate——– 2005.02.01.19:47