GlassFish 开发环境快速部署

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等标签?

 

你可能感兴趣的:(eclipse,jsp,JSF,jpa,Glassfish)