一次web發布過程的相關配置
keyword: 配置 Tomcat配置 MySql配置 server.conf my.ini 啟動參數 虛擬機參數 jsp預編譯Author: Alex
發布環境: Tomcat5 + MySql4 +Hibernate + Win2003
一.MySql配置文件
my.ini文件配置
# The default character set that will be used when a new schema or table is
# created and no character set is defined
####設置字符集,MySql默認為latin1,如果你的存儲出現亂碼就改為GBK吧
#default-character-set=latin1
default-character-set=GBK
# The default storage engine that will be used when create new tables when
###建議用INNODB,支持事務
default-storage-engine=INNODB
# created and no character set is defined
####設置字符集,MySql默認為latin1,如果你的存儲出現亂碼就改為GBK吧
#default-character-set=latin1
default-character-set=GBK
# The default storage engine that will be used when create new tables when
###建議用INNODB,支持事務
default-storage-engine=INNODB
二.Tomcat配置文件
- server.conf
相關配置如下:
<Context path="/sample" docBase="sample" debug="0" privileged="true">
<Resource name="jdbc/sample" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/sample">
<parameter>
<name>username</name>
<value>sample</value>
</parameter>
<parameter>
<name>password</name>
<value>sample</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>org.gjt.mm.mysql.Driver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:mysql://localhost/sample</value>
</parameter>
</ResourceParams>
</Context>
<Resource name="jdbc/sample" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/sample">
<parameter>
<name>username</name>
<value>sample</value>
</parameter>
<parameter>
<name>password</name>
<value>sample</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>org.gjt.mm.mysql.Driver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:mysql://localhost/sample</value>
</parameter>
</ResourceParams>
</Context>
記得把jdbc驅動拷貝到Tomcat的common\lib下
- 優化jvm參數
set JAVA_OPTS=-Xms512m -Xmx512m
注:如果你的 Tomcat是通過service方式啟動的這個設置不起作用,所以你最好通過startup.bat方式來啟動,service 是直接調用Tomcat.exe,所以不知道怎么設置參數,我試了一下在服務里的"啟動參數"里加入
-Xms512m -Xmx512m好像不起作用.知道的兄弟補充下啊
好了,啟動你的Tomcat吧,查看資源管理器,看內存是否已經被Tomcat占用了512M
三.web.xml配置
主要涉及數據源,servlet,tld映射
web.xml配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>CPMSWeb</display-name>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>application</param-name>
<param-value>ApplicationResources</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet>
<servlet-name>com.my.DataServlet</servlet-name>
<servlet-class>com.my.DataServlet</servlet-class>
<init-param>
<param-name>license</param-name>
<param-value>/WEB-INF/license.dat</param-value>
</init-param>
<!--為DataServlet提供datasource-->
<init-param>
<param-name>dataSource</param-name>
<param-value>jdbc/report,mysql,GBK</param-value>
</init-param>
<init-param>
<init-param>
<param-name>maxConcurrentForBigReport</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>logConfig</param-name>
<param-value>/WEB-INF/runqianReportLog.properties</param-value>
</init-param>
<init-param>
<param-name>certFile</param-name>
<param-value>C:\Documents and Settings\sjr\.keystore</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<filter>
<filter-name>eXtremeExport</filter-name>
<filter-class>
org.extremecomponents.table.filter.ExportFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>eXtremeExport</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<taglib>
<taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-template.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-template.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-tiles.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-tiles.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-nested.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-nested.tld</taglib-location>
</taglib>
<!--配置一些定制的配置文件-->
<env-entry>
<env-entry-name>ConfigXmlFilePath</env-entry-name>
<env-entry-value>C:/config.xml</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
</web-app>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>CPMSWeb</display-name>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>application</param-name>
<param-value>ApplicationResources</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet>
<servlet-name>com.my.DataServlet</servlet-name>
<servlet-class>com.my.DataServlet</servlet-class>
<init-param>
<param-name>license</param-name>
<param-value>/WEB-INF/license.dat</param-value>
</init-param>
<!--為DataServlet提供datasource-->
<init-param>
<param-name>dataSource</param-name>
<param-value>jdbc/report,mysql,GBK</param-value>
</init-param>
<init-param>
<init-param>
<param-name>maxConcurrentForBigReport</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>logConfig</param-name>
<param-value>/WEB-INF/runqianReportLog.properties</param-value>
</init-param>
<init-param>
<param-name>certFile</param-name>
<param-value>C:\Documents and Settings\sjr\.keystore</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<filter>
<filter-name>eXtremeExport</filter-name>
<filter-class>
org.extremecomponents.table.filter.ExportFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>eXtremeExport</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<taglib>
<taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-template.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-template.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-tiles.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-tiles.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-nested.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-nested.tld</taglib-location>
</taglib>
<!--配置一些定制的配置文件-->
<env-entry>
<env-entry-name>ConfigXmlFilePath</env-entry-name>
<env-entry-value>C:/config.xml</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
</web-app>
四.hibernate配置文件,hibernate.cfg.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.provider_class">net.sf.hibernate.connection.C3P0ConnectionProvider</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost/sample</property>
<property name="hibernate.connection.driver_class">org.gjt.mm.mysql.Driver</property>
<property name="hibernate.connection.username">sample</property>
<property name="hibernate.connection.password">sample</property>
<property name="hibernate.use_outer_join">True</property>
<property name="connection.pool_size">50</property>
<property name="show_sql">true</property>
<property name="use_outer_join">true</property>
<property name="jdbc.fetch_size">50</property>
<property name="jdbc.batch_size">50</property>
<property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property>
<!--
<property name="hibernate.dbcp.maxActive">50</property>
<property name="hibernate.dbcp.whenExhaustedAction">1</property>
<property name="hibernate.dbcp.maxWait">120000</property>
<property name="hibernate.dbcp.maxIdle">30</property>
-->
<!-- configuration pool via c3p0-->
<property name="c3p0.acquire_increment">1</property>
<property name="c3p0.idle_test_period">100</property> <!-- seconds -->
<property name="c3p0.max_size">100</property>
<property name="c3p0.max_statements">0</property>
<property name="c3p0.timeout">100</property> <!-- seconds -->
<!-- DEPRECATED very expensive property name="c3p0.validate>-->
<property name="cache.provider_class">net.sf.hibernate.cache.HashtableCacheProvider</property>
<property name="hibernate.transaction.factory_class">net.sf.hibernate.transaction.JDBCTransactionFactory</property>
<property name="hibernate.cglib.use_reflection_optimizer">false</property>
<mapping resource="conf/mapping/Sample.hbm.xml"/>
</session-factory>
</hibernate-configuration>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.provider_class">net.sf.hibernate.connection.C3P0ConnectionProvider</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost/sample</property>
<property name="hibernate.connection.driver_class">org.gjt.mm.mysql.Driver</property>
<property name="hibernate.connection.username">sample</property>
<property name="hibernate.connection.password">sample</property>
<property name="hibernate.use_outer_join">True</property>
<property name="connection.pool_size">50</property>
<property name="show_sql">true</property>
<property name="use_outer_join">true</property>
<property name="jdbc.fetch_size">50</property>
<property name="jdbc.batch_size">50</property>
<property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property>
<!--
<property name="hibernate.dbcp.maxActive">50</property>
<property name="hibernate.dbcp.whenExhaustedAction">1</property>
<property name="hibernate.dbcp.maxWait">120000</property>
<property name="hibernate.dbcp.maxIdle">30</property>
-->
<!-- configuration pool via c3p0-->
<property name="c3p0.acquire_increment">1</property>
<property name="c3p0.idle_test_period">100</property> <!-- seconds -->
<property name="c3p0.max_size">100</property>
<property name="c3p0.max_statements">0</property>
<property name="c3p0.timeout">100</property> <!-- seconds -->
<!-- DEPRECATED very expensive property name="c3p0.validate>-->
<property name="cache.provider_class">net.sf.hibernate.cache.HashtableCacheProvider</property>
<property name="hibernate.transaction.factory_class">net.sf.hibernate.transaction.JDBCTransactionFactory</property>
<property name="hibernate.cglib.use_reflection_optimizer">false</property>
<mapping resource="conf/mapping/Sample.hbm.xml"/>
</session-factory>
</hibernate-configuration>
五.這個其實不是配置,應該算是一項優化方案,即jsp預編譯
jsp預編譯有2個好處
- 提高jsp響應速度,因為jsp全部預先編譯成class了,少了中間的環節
- 增強jsp安全性,你的jsp源碼可以全部刪除,只提供一個YourJsps.jar包到lib就可以了
<!-- =================================================================== -->
<!-- precompile jsp -->
<!-- =================================================================== -->
<target name="jsp2java">
<taskdef classname="org.apache.jasper.JspC" name="jsp2java">
<classpath id="jsp2java.classpath">
<fileset dir="${tomcat.home}/bin">
<include name="*.jar"/>
</fileset>
<fileset dir="${tomcat.home}/server/lib">
<include name="*.jar"/>
</fileset>
<fileset dir="${tomcat.home}/common/lib">
<include name="*.jar"/>
</fileset>
</classpath>
</taskdef>
<jsp2java classpath="jsp2java.classpath" javaEncoding="UTF-8" validateXml="false" uriroot="${web.dir}" webXmlFragment="${web.dir}/WEB-INF/webJSP.xml" outputDir="${web.dir}/WEB-INF/JspC/src"/>
</target>
<target name="java2class">
<mkdir dir="${web.dir}/WEB-INF/JspC/classes"/>
<javac srcdir="${web.dir}/WEB-INF/JspC/src" destdir="${web.dir}/WEB-INF/JspC/classes" encoding="UTF-8" optimize="off" debug="on" failonerror="false" excludes="**/*.smap">
<classpath id="java2class.classpath">
<pathelement location="${web.dir}/WEB-INF/classes"/>
<fileset dir="${web.dir}/WEB-INF/lib">
<include name="*.jar"/>
</fileset>
<pathelement location="${tomcat.home}/common/classes"/>
<fileset dir="${tomcat.home}/common/lib">
<include name="*.jar"/>
</fileset>
<pathelement location="${tomcat.home}/shared/classes"/>
<fileset dir="${tomcat.home}/shared/lib">
<include name="*.jar"/>
</fileset>
<fileset dir="${tomcat.home}/bin">
<include name="*.jar"/>
</fileset>
</classpath>
<include name="**"/>
<exclude name="tags/**" />
</javac>
</target>
<target name="class2jar">
<jar basedir="${web.dir}/WEB-INF/JspC/classes" jarfile="${web.dir}/WEB-INF/lib/${project.name}JSP.jar"/>
</target>
<target name="clear">
<delete dir="${web.dir}/WEB-INF/JspC/classes"/>
<delete dir="${web.dir}/WEB-INF/JspC/src"/>
<delete dir="${web.dir}/WEB-INF/JspC"/>
</target>
<!-- precompile jsp -->
<!-- =================================================================== -->
<target name="jsp2java">
<taskdef classname="org.apache.jasper.JspC" name="jsp2java">
<classpath id="jsp2java.classpath">
<fileset dir="${tomcat.home}/bin">
<include name="*.jar"/>
</fileset>
<fileset dir="${tomcat.home}/server/lib">
<include name="*.jar"/>
</fileset>
<fileset dir="${tomcat.home}/common/lib">
<include name="*.jar"/>
</fileset>
</classpath>
</taskdef>
<jsp2java classpath="jsp2java.classpath" javaEncoding="UTF-8" validateXml="false" uriroot="${web.dir}" webXmlFragment="${web.dir}/WEB-INF/webJSP.xml" outputDir="${web.dir}/WEB-INF/JspC/src"/>
</target>
<target name="java2class">
<mkdir dir="${web.dir}/WEB-INF/JspC/classes"/>
<javac srcdir="${web.dir}/WEB-INF/JspC/src" destdir="${web.dir}/WEB-INF/JspC/classes" encoding="UTF-8" optimize="off" debug="on" failonerror="false" excludes="**/*.smap">
<classpath id="java2class.classpath">
<pathelement location="${web.dir}/WEB-INF/classes"/>
<fileset dir="${web.dir}/WEB-INF/lib">
<include name="*.jar"/>
</fileset>
<pathelement location="${tomcat.home}/common/classes"/>
<fileset dir="${tomcat.home}/common/lib">
<include name="*.jar"/>
</fileset>
<pathelement location="${tomcat.home}/shared/classes"/>
<fileset dir="${tomcat.home}/shared/lib">
<include name="*.jar"/>
</fileset>
<fileset dir="${tomcat.home}/bin">
<include name="*.jar"/>
</fileset>
</classpath>
<include name="**"/>
<exclude name="tags/**" />
</javac>
</target>
<target name="class2jar">
<jar basedir="${web.dir}/WEB-INF/JspC/classes" jarfile="${web.dir}/WEB-INF/lib/${project.name}JSP.jar"/>
</target>
<target name="clear">
<delete dir="${web.dir}/WEB-INF/JspC/classes"/>
<delete dir="${web.dir}/WEB-INF/JspC/src"/>
<delete dir="${web.dir}/WEB-INF/JspC"/>
</target>
我試了下,執行jsp2java沒有問題,不過java2class則報錯,錯誤如下:
ow_jsp.java:134: 無法將 org.apache.jsp.jsp.show_jsp 中的 _jspx_meth_logic_present_2(javax.servlet.js
p.tagext.JspTag,javax.servlet.jsp.PageContext) 應用于 (org.apache.struts.taglib.logic.IterateTag,jav
ax.servlet.jsp.PageContext)
[javac] if (_jspx_meth_logic_present_2(_jspx_th_logic_iterate_0, pageContext))
p.tagext.JspTag,javax.servlet.jsp.PageContext) 應用于 (org.apache.struts.taglib.logic.IterateTag,jav
ax.servlet.jsp.PageContext)
[javac] if (_jspx_meth_logic_present_2(_jspx_th_logic_iterate_0, pageContext))
不知道怎么搞的,該提供的類路徑全給了,好像是Struts的標簽解析的時候出錯了,還有什么地方會出問題呢,過段時間再研究這個問題,知道的兄弟也告知下哦 :)
大致就這些了.
posted on 2006-02-24 21:03 Vincent.Chen 閱讀(202) 評論(0) 編輯 收藏 所屬分類: Java