IDE Eclipse 3.5 AppServer:GlassFishV2.1
使用 http://ajax.dev.java.net/eclipse updatesite 安装glassfish plugins.
注意 wst 的向导已经找不到安装源了。glassfish官方网站已不提供standalone的plugin包下载。
使用JSF(facelet+Richfaces)+Spring+JPA+Toplink开发。
工程必须使用EAR Application Project发布,因为JPA必须使用EJBClassLoader加载。
如果使用War的形式,会报加载不了Entity的类错误。
先使用Eclipse的Publish项目一次,
{默认发布的缺点是即使是修改jsp都需要重新打包ear发布一次,更别说改java。这样发布一次需要二十几秒 }
我的做法是:
将domains\domain1\applications\j2ee-apps\${project_dir}目录copy到其它目录,假设是${dir}
在server面板里remove前面发布的project。
使用ant脚本asadmin deploydir来更新发布${dir},这样修改jsp就只需同步工程的WebApp目录和${dir}中的${model}_war目录,非常快。
修改java的话,等Eclipse自动build后同步一下class文件,再deploydir一次,时间只有十几秒,几乎是以前的一半。
ant脚步如下:
<?xml version="1.0" encoding="UTF-8"?> <project name="project_name" default="change_jsp" basedir="."> <property name="src" value="WebApp" /> <property name="dest" value="D:/project_name/project_name_war" /> <property name="dir" value="D:/project_name/" /> <property name="module" value="project_name_webroot_name" /> <patternset id="refresh.files"> <include name="**/*.class" /> <include name="**/*.js" /> <include name="**/*.xml" /> <include name="**/*.jsp" /> </patternset> <target name="tools" > <property name="sunappserver.rootdirectory" value="D:\Space\glassfish" /> <condition property="sunappserver-script-suffix" value=".bat"> <os family="windows" /> </condition> <condition property="sunappserver-script-suffix" value=""> <not> <os family="windows" /> </not> </condition> <condition property="path.separator" value=";"> <os family="windows" /> </condition> <property name="asadmin" value="${sunappserver.rootdirectory}/bin/asadmin${sunappserver-script-suffix}" /> <property name="appclient" value="${sunappserver.rootdirectory}/bin/appclient${sunappserver-script-suffix}" /> <echo file="passw" message="AS_ADMIN_PASSWORD=${sunappserver.adminpassword}" /> </target> <target name="deploydir" depends="tools"> <property name="failonerror" value="true" /> <exec executable="${asadmin}" failonerror="${failonerror}"> <arg line=" deploydir " /> <arg line=" --name ${module}" /> <arg line=" --force=true " /> <arg line=" ${dir}" /> </exec> <echo message="Application dir Deployed" /> </target> <target name="undeploy" depends="tools"> <echo message="Undeploying ${module}." /> <exec executable="${asadmin}"> <arg line="undeploy"/> <arg line="'${module}'" /> </exec> </target> <target name="remove"> <echo message="clean files " /> <delete verbose="true"> <fileset dir="${dest}"> <patternset refid="refresh.files" /> </fileset> </delete> </target> <target name="copy"> <echo message="copy files " /> <copy todir="${dest}" overwrite="false" verbose="true"> <fileset dir="${src}" /> </copy> </target> <target name="change_jsp" depends="remove,copy"> </target> <target name="change_class" depends="remove,copy,deploydir"> </target> </project>
我使用过程中发现,有时又出现了找不到Entity类的现象,不过重新按以上方式做一遍又好了。
如果有人类似的开发部署方式,请指教。
——————————————————————————————————————————————————————
我有个问题:在JSF中为什么不能使用JSTL的c:out,fmt:formatDate等标签?