DreamTiger的梦幻乐园

随便写写,自得其乐,生活就是这样

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  29 Posts :: 0 Stories :: 13 Comments :: 0 Trackbacks

#

今天遇到一个问题就是,如何设置<html:select>多选情况下的默认值,网上有些人说下面是可行的:
<html:form action="/projectUpdate.do" focus="experimenters">
      <html:select property="experimenters" size="10" multiple="true" value="experimenters">
        <html:optionsCollection name="msms_experimenterlist" value="email" label="email"/>
      </html:select>
....
</html:form>
这里,experimenters是projectForm的属性,类型为String[]
msms_experimenterlist是保存在request中的一个set<UserInfo>,email是UserInfo的属性,类型为String。

显示以及传递到/projectUpdate.do对应的Action都正常,但是如果给projectForm的experimenters设置了初始值,在真实显示的时候,多选框中并没有设置这些初始值,很是麻烦。

虽然最后通过jsp的方法解决,总是不爽阿:
      <html:select property="experimenters" size="10" multiple="true" value="experimenters">
       <%ProjectForm projForm = (ProjectForm) request.getAttribute("projectForm");
         HashSet<String> oldExperimenters = new HashSet<String>(Arrays.asList(projForm.getExperimenters()));
         List userList = (List)request.getAttribute("msms_experimenterlist");
         for(int i = 0;i < userList.size();i++){
           UserInfo user = (UserInfo) userList.get(i);
           if (oldExperimenters.contains(user.getEmail())){
             out.print("<option value=\"" + user.getEmail() + "\" selected>" + user.getEmail());
           }
           else{
             out.print("<option value=\"" + user.getEmail() + "\">" + user.getEmail());
           }
         }
        %>
      </html:select>


posted @ 2005-12-23 23:04 梦幻乐园 阅读(1395) | 评论 (1)编辑 收藏

http://www-900.ibm.com/cn/support/faqhtmlfaq/1311001000049.htm

环境
 产品:AIX
 版本:V4
问题
 如何用tar备份链接文件
解答

 用tar备份链接文件时,缺省时只备份链接,用-h选项可以将链接所指的文件一同备份进去.


posted @ 2005-12-15 16:50 梦幻乐园 阅读(1030) | 评论 (0)编辑 收藏

由于通过tomcat的manager无法完全清除msms目录,导致重新deploy会无效,于是想出了怪招:

    <target name="deploy-local" description="Install application in Local Tomcat">
        <echo message="deploying to local ..." />
        <exec executable="cmd" os="Windows 2000" vmlauncher="false">
            <arg line="/c start ${tomcat.dir}/bin/shutdown.bat" />
        </exec>
        <delete dir="${tomcat.webapps}/${context-path}" />
        <copy todir="${tomcat.webapps}" overwrite="true">
            <fileset dir="${dist}">
                <include name="${context-path}.war" />
            </fileset>
        </copy>
        <exec executable="${tomcat.dir}/bin/startup.bat" os="Windows 2000" spawn="true" vmlauncher="false">
            <arg line="/c start ${tomcat.dir}/bin/startup.bat" />
        </exec>
    </target>

首先通过调用shutdown.bat,而且不设置spawn="true",这样就会有一个cmd窗口在那里留着,可以看着tomcat停掉了,然后关 闭这个cmd窗口,ant才会继续向下执行删除和拷贝,然后自动启动tomcat。虽然看上去比较怪,好歹还算管用,哈哈。
posted @ 2005-12-14 21:26 梦幻乐园 阅读(499) | 评论 (0)编辑 收藏

下载了Hibernate3.1编译,无论通过build.bat还是ant jar都会出错。前者会说找不到javac,我晕倒。后者说antlr/Tool找不到。

后来在hibernate网站上(http://www.hibernate.org/6.html)看到:

Fixing Ant classpath/plugin issues

You may need to add junit.jar to your $ANT_HOME/lib directory if it is not there already, or alternatively remove the $ANT_HOME/lib/ant-junit.jar file. For Hibernate3, repeat the steps above, but also copy lib/antlr.jar or remove the $ANT_HOME/lib/ant-antlr.jar file.

These steps are necessary because Ant ships with plugin stub libraries in its classpath, so Ant plugins for JUnit or Antlr can't be used without copying or removing files. If you don't have Ant installed on your machine or don't want to mess with the default Ant installation then, on Windows, just run build.bat to use the bundled Ant libraries.

虽然他说可以用build.bat来进行,但我也不知道他为什么会找不到javac,反正我把antlr.jar拷到ant的lib下面,就OK了。



posted @ 2005-12-14 21:22 梦幻乐园 阅读(309) | 评论 (0)编辑 收藏

昨天的错误至今无法修正,即使重装了Tomcat也不行。

不过,deploy到两台linux服务器上倒都成功了。
    <taskdef name="deploy" classname="org.apache.catalina.ant.DeployTask">
        <classpath>
            <path location="${tomcat.dir}/server/lib/catalina-ant.jar" />
        </classpath>
    </taskdef>

    <taskdef name="list" classname="org.apache.catalina.ant.ListTask">
        <classpath>
            <path location="${tomcat.dir}/server/lib/catalina-ant.jar" />
        </classpath>
    </taskdef>

    <target name="deploy-web" description="Install application in Local Tomcat">
        <echo message="deploying to web ..." />
        <deploy url="http://172.16.1.20:8080/manager" username="${tomcat.manager.username}" password="${tomcat.manager.password}" path="/${context-path}" war="file:${dist}/${context-path}.war" update="true" />
    </target>

    <target name="list-web">
        <echo message="list web tomcat ..." />
        <list url="http://172.16.1.20:8080/manager" username="${tomcat.manager.username}" password="${tomcat.manager.password}" />
    </target>


这里跟昨天的代码有一点不一样:
1、localWar改成了war。
原来更新远程服务器的时候,总是显示更新成功,但是到webapps目录下总是没有相应的war文件,通过调用
ant list-web
发现,有一个context-path是dist/msms,而且是stop状态。哦,原来localWar的意思不是指开发的机器的local path,而是指把这个war被写到服务器的什么地方。改成war就正常了。

2、不需要判断是否已经deploy进而调用undeploy了,直接通过update="true"更新就可以了。
posted @ 2005-12-09 11:06 梦幻乐园 阅读(874) | 评论 (0)编辑 收藏

今天研究对象是Ant,用于对msms系统进行Tomcat的自动部署。

遇到一个怪问题,百思不得其解:
通过ant depoly可以把msms.war部署到tomcat上。当然,要求这时候webapps下面没有msms目录。
看tomcat的纪录,加载msms.war正常,网页也可以打开。

通过ant undeploy,可以把msms卸载。Tomcat显示:
Undeploying context [/msms]
正常卸载了。问题是,去看webapps目录下面,居然有一个msms目录的残骸,里面保留的目录是
WEB-INF\lib
有以下几个文件残留着:
commons-digester.jar
commons-validator.jar
struts.jar

这时候msms目录也无法手工删除,必须停掉tomcat后才能删除。

我装的tomcat是5.5。不知道是否还有人遇到过这种情况,我反正是晕了。

build.properties文件如下:
tomcat.dir=C:/ApacheGroup/Tomcat5.5
tomcat.webapps=C:/ApacheGroup/Tomcat5.5/webapps
tomcat.manager.url=http://localhost:8080/manager
tomcat.manager.username=admin
tomcat.manager.password=xxxxxxxx

build.xml文件如下:
<?xml version="1.0"?>
<project name="msms" default="compile" basedir=".">
    <!-- Ant Tomcat Task Definition -->
    <taskdef name="deploy" classname="org.apache.catalina.ant.DeployTask">
        <classpath>
            <path location="${tomcat.dir}/server/lib/catalina-ant.jar" />
        </classpath>
    </taskdef>

    <taskdef name="undeploy" classname="org.apache.catalina.ant.UndeployTask">
        <classpath>
            <path location="${tomcat.dir}/server/lib/catalina-ant.jar" />
        </classpath>
    </taskdef>

    <taskdef name="install" classname="org.apache.catalina.ant.InstallTask">
        <classpath>
            <path location="${tomcat.dir}/server/lib/catalina-ant.jar" />
        </classpath>
    </taskdef>

    <taskdef name="reload" classname="org.apache.catalina.ant.ReloadTask">
        <classpath>
            <path location="${tomcat.dir}/server/lib/catalina-ant.jar" />
        </classpath>
    </taskdef>

    <taskdef name="list" classname="org.apache.catalina.ant.ListTask">
        <classpath>
            <path location="${tomcat.dir}/server/lib/catalina-ant.jar" />
        </classpath>
    </taskdef>

    <taskdef name="start" classname="org.apache.catalina.ant.StartTask">
        <classpath>
            <path location="${tomcat.dir}/server/lib/catalina-ant.jar" />
        </classpath>
    </taskdef>

    <taskdef name="stop" classname="org.apache.catalina.ant.StopTask">
        <classpath>
            <path location="${tomcat.dir}/server/lib/catalina-ant.jar" />
        </classpath>
    </taskdef>

    <property name="build" value="build" />
    <property name="dist" value="dist" />
    <property name="src" value="src/java" />
    <property name="test" value="src/test" />
    <property name="war-config" value="src/config" />
    <property name="report" value="report" />
    <property name="lib" value="lib" />
    <property name="web" value="web" />
    <property name="meta" value="meta" />
    <property name="context-path" value="${ant.project.name}" />
    <property file="build.properties" />

    <path id="build.classpath">
        <fileset file="${lib}/*.jar" />
        <fileset dir="${tomcat.dir}/common/lib">
            <include name="*.jar" />
        </fileset>
        <fileset dir="${tomcat.dir}/common/endorsed">
            <include name="*.jar" />
        </fileset>
        <pathelement path="${build}" />
    </path>

    <!-- Hibernate Tool Task Definition -->
    <taskdef name="hibernatetool" classname="org.hibernate.tool.ant.HibernateToolTask" classpathref="build.classpath" />
   
    <target name="clean">
        <echo message="Cleaning up the build and dist directories" />
        <delete dir="${build}" />
        <mkdir dir="${build}" />
        <delete dir="${dist}" />
        <mkdir dir="${dist}" />
    </target>

    <target name="copy-resources">
        <copy todir="${build}">
            <fileset dir="${src}">
                <exclude name="**/*.java" />
                <exclude name="**/*.hbm.xml" />
            </fileset>
        </copy>
    </target>

    <target name="compile" depends="copy-resources">
        <javac destdir="${build}" srcdir="${src}:${test}">
            <classpath refid="build.classpath" />
        </javac>
    </target>

    <target name="initdb" depends="compile">
        <hibernatetool destdir="${build}">
            <classpath>
                <path location="${build}" />
            </classpath>
            <annotationconfiguration configurationfile="src/java/hibernate.cfg.xml" />

            <hbm2ddl create="true" />
        </hibernatetool>
    </target>

    <target name="run" depends="compile">
        <java fork="true" classname="cn.ac.rcpa.msms.tools.ProjectManager" classpathref="build.classpath">
            <classpath path="${build}" />
            <arg value="${action}" />
            <arg value="${project}" />
            <arg value="${description}" />
        </java>
    </target>

    <target name="test" depends="compile" description="run junit test">
        <delete dir="${report}" />
        <mkdir dir="${report}" />
        <junit dir="." fork="true" printsummary="on" haltonfailure="false" failureproperty="tests.failed" showoutput="true">
            <classpath refid="build.classpath" />
            <formatter type="brief" />
            <batchtest todir="${report}">
                <fileset dir="${build}">
                    <include name="**/*Test.*" />
                    <include name="**/Test*.*" />
                </fileset>
            </batchtest>
        </junit>
        <fail if="tests.failed">
      ***********************************************************
      **** One or more tests failed! Check the output ... ****
      ***********************************************************
    </fail>
    </target>

    <target name="create-war" depends="clean, compile" description="build release war">
        <echo message="creation the WAR file...${context-path}.war" />
        <war destfile="${dist}/${context-path}.war" webxml="${meta}/web.xml">
            <classes dir="${build}">
                <exclude name="**/*Test.*" />
                <exclude name="**/Test*.*" />
                <exclude name="hibernate.cfg.xml" />
            </classes>
            <lib dir="${lib}" />
            <fileset dir="${web}" />
            <zipfileset dir="${war-config}" prefix="WEB-INF/classes" />
        </war>
        <!--        <scp file="${dist}/${context-path}.war" todir="root:${password}@172.16.1.20:/usr/local/tomcat/webapps" trust="true" /> -->
    </target>

    <target name="deploy" description="Install application in Tomcat">
        <deploy url="${tomcat.manager.url}" username="${tomcat.manager.username}" password="${tomcat.manager.password}" path="/${context-path}" localWar="file:${dist}/${context-path}.war" />
    </target>

    <target name="undeploy" description="Remove application in Tomcat" if="already.deployed">
        <undeploy url="${tomcat.manager.url}" username="${tomcat.manager.username}" password="${tomcat.manager.password}" path="/${context-path}" />
    </target>

    <target name="reload" description="Reload application in Tomcat">
        <reload url="${tomcat.manager.url}" username="${tomcat.manager.username}" password="${tomcat.manager.password}" path="/${context-path}" />
    </target>

    <target name="start" description="Start Tomcat application">
        <start url="${tomcat.manager.url}" username="${tomcat.manager.username}" password="${tomcat.manager.password}" path="/${context-path}" />
    </target>

    <target name="stop" description="Stop Tomcat application">
        <stop url="${tomcat.manager.url}" username="${tomcat.manager.username}" password="${tomcat.manager.password}" path="/${context-path}" />
    </target>

    <target name="list" description="List Tomcat applications">
        <list url="${tomcat.manager.url}" username="${tomcat.manager.username}" password="${tomcat.manager.password}" />
    </target>

    <target name="deploy-application" description="Compile the web application...">
        <echo message="Undeploying the application only if it's deployed..." />
        <available file="${tomcat.webapps}/${context-path}.war" property="already.deployed" />
        <antcall target="undeploy" />
        <antcall target="create-war" />
        <antcall target="deploy" />
    </target>
</project>


posted @ 2005-12-08 18:13 梦幻乐园 阅读(1408) | 评论 (3)编辑 收藏

http://www.jroller.com/page/kbaum/20040708#orm_lazy_initialization_with_dao
posted @ 2005-12-07 09:52 梦幻乐园 阅读(240) | 评论 (0)编辑 收藏

用hibernate一段时间,期间写过hbm.xml,也通过XDoclet产生过Java,
最后采用的是annotation方式。保留一份包含了hbm.xml方式和XDoclet
方式的hibernate.cfg.xml文件,以备查询。

<?xml version="1.0"?>
<project name="RcpaMSMSDisplay" default="compile" basedir=".">

    <property name="src.dir" value="${basedir}/src" />
    <property name="test.dir" value="${basedir}/test" />
    <property name="classes.dir" value="${basedir}/WEB-INF/classes" />
    <property name="report.dir" value="${basedir}/report" />
    <property name="tomcat.dir" value="C:/ApacheGroup/Tomcat5.5" />
    <property name="lib.dir" value="${basedir}/WEB-INF/lib" />

    <path id="build.classpath">
        <fileset file="${lib.dir}/*.jar" />
        <fileset file="${tomcat.dir}/common/lib/*-api.jar" />
        <pathelement path="${classes.dir}" />
    </path>

    <target name="clean">
        <delete dir="${classes.dir}" />
        <mkdir dir="${classes.dir}" />
    </target>

    <target name="compile" depends="copy-resources">
        <javac destdir="${classes.dir}" srcdir="${src.dir}:${test.dir}">
            <classpath refid="build.classpath" />
        </javac>
    </target>

    <target name="copy-resources">
        <copy todir="${classes.dir}">
            <fileset dir="${src.dir}">
                <exclude name="**/*.java" />
                <exclude name="**/*.hbm.xml" />
            </fileset>
        </copy>
    </target>

    <target name="copy-hbm-xml">
        <copy todir="${classes.dir}">
            <fileset dir="${src.dir}">
                <include name="**/*.hbm.xml" />
            </fileset>
        </copy>
    </target>

    <target name="generate" description="Generates Hibernate class descriptor files." depends="compile">
        <!-- Define the hibernatedoclet task -->
        <taskdef name="hibernatedoclet" classname="xdoclet.modules.hibernate.HibernateDocletTask">
            <classpath>
                <fileset dir="${lib.dir}/xdoclet">
                    <include name="*.jar" />
                </fileset>
            </classpath>
        </taskdef>

        <!-- Execute the hibernatedoclet task -->
        <hibernatedoclet destdir="${src.dir}" excludedtags="@version,@author,@todo" verbose="false">
            <fileset dir="${src.dir}">
                <include name="**/*.java" />
            </fileset>
            <hibernate version="3.0" />
        </hibernatedoclet>
    </target>

    <target name="initdb" depends="compile">
        <taskdef name="hibernatetool" classname="org.hibernate.tool.ant.HibernateToolTask" classpathref="build.classpath" />

        <hibernatetool destdir="${classes.dir}">
            <classpath>
                <path location="${classes.dir}" />
            </classpath>
            <annotationconfiguration configurationfile="src/hibernate.cfg.xml" />

            <hbm2ddl create="true" />
        </hibernatetool>
    </target>

    <target name="run" depends="compile">
        <java fork="true" classname="cn.ac.rcpa.msms.tools.ProjectManager" classpathref="build.classpath">
            <classpath path="${classes.dir}" />
            <arg value="${action}" />
            <arg value="${project}" />
            <arg value="${description}" />
        </java>
    </target>
    
    <target name="test" depends="compile" description="run junit test">
        <delete dir="${report.dir}" />
        <mkdir dir="${report.dir}" />
        <junit dir="." fork="true" printsummary="on" haltonfailure="false" failureproperty="tests.failed" showoutput="true">
            <classpath refid="build.classpath" />
            <formatter type="brief" />
            <batchtest todir="${report.dir}">
                <fileset dir="${classes.dir}">
                    <include name="**/*Test.*" />
                    <include name="**/Test*.*" />
                </fileset>
            </batchtest>
        </junit>
        <fail if="tests.failed">
      ***********************************************************
      **** One or more tests failed! Check the output ... ****
      ***********************************************************
    </fail>
    </target>
    
</project>

posted @ 2005-12-06 16:25 梦幻乐园 阅读(761) | 评论 (0)编辑 收藏

1、HelloApp
书上是:
BeanFactory factory = new XmlBeanFactory(new FileInputStream("hello.xml"));
应该是:
BeanFactory factory = new XmlBeanFactory(new FileSystemResource("hello.xml"));

2、KnightApp
在实现了XML中Minstrel的interceptor后,
需要把
KnightOfTheRoundTable knight = (KnightOfTheRoundTable) factory.getBean("knight");
改成:
Knight knight = (Knight) factory.getBean("knight");
否则会报:
Exception in thread "main" java.lang.ClassCastException: $Proxy0
posted @ 2005-12-05 12:49 梦幻乐园 阅读(411) | 评论 (0)编辑 收藏

由于数据库connection在较长时间没有访问下会自动断开连接,导致浏览出错,增加proxool作为数据库pool。它有自动连接功能。
1、从http://proxool.sourceforge.net/下载proxool,释放proxool.jar到WEB-INF/lib

2、在hibernate.cfg.xml中增加:
<property name="hibernate.proxool.pool_alias">dbpool</property>
<property name="hibernate.proxool.xml">proxool.xml</property>
<property name="connection.provider_class">org.hibernate.connection.ProxoolConnectionProvider</property>

3、在与hibernate.cfg.xml同级目录(src根目录下)增加proxool.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<!-- the proxool configuration can be embedded within your own application's.
    Anything outside the "proxool" tag is ignored. -->
<something-else-entirely>
    <proxool>
        <alias>dbpool</alias>
        <!--proxool只能管理由自己产生的连接-->
        <driver-url>
            jdbc:mysql://localhost:3306/msms
        </driver-url>
        <driver-class>com.mysql.jdbc.Driver</driver-class>
        <driver-properties>
            <property name="user" value="sqh" />
            <property name="password" value="sqh" />
        </driver-properties>
        <!-- proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁-->
        <house-keeping-sleep-time>90000</house-keeping-sleep-time>
        <!-- 最少保持的空闲连接数-->
        <prototype-count>5</prototype-count>
        <!-- 允许最大连接数,超过了这个连接,再有请求时,就排在队列中等候,最大的等待请求数由maximum-new-connections决定-->
        <maximum-connection-count>100</maximum-connection-count>
        <!-- 最小连接数-->
        <minimum-connection-count>10</minimum-connection-count>
    </proxool>
</something-else-entirely>

4、重起tomcat
posted @ 2005-12-05 12:46 梦幻乐园 阅读(1403) | 评论 (0)编辑 收藏

仅列出标题
共3页: 上一页 1 2 3 下一页