在glassfishv3上部署grails项目

大东哥 发布于 2009/09/09 09:27
阅读 1K+
收藏 0

经测试,在glassfishv3上能完美部署grails1.1.1项目。

1.数据源:

既然用的是glassfish,当然最好用它的jndi数据源,先配glassfish的数据源,连接池,如命名为:jdbc/cms。需要将对应数据库的jdbc驱动拷贝到形如:glassfishv3-prelude\glassfish\domains\yourdomain\lib ,也就是你创建的domain下找,这样数据源才能配置成功。也许可以配置全局的,但是这应该没有意义。

在grails项目中的DataSource.groovy中,做如下配置:

dataSource {
    pooled = false   
}
hibernate {
    cache.use_second_level_cache=true
    cache.use_query_cache=true
    cache.provider_class='org.hibernate.cache.EhCacheProvider' 
}
// environment specific settings
environments {
 development {
  dataSource {
   driverClassName = "com.microsoft.sqlserver.jdbc.SQLServerDriver"
   username = "sa"
   password = "xxxx"
   dbCreate = "update" // one of 'create', 'create-drop','update'
   url = "jdbc:sqlserver://localhost:1433;DatabaseName=cms"
  }
 }
 test {
  dataSource {
   dbCreate = "update"
   url = "jdbc:sqlserver://localhost:1433;DatabaseName=cms"
  }
 }
 production {
  dataSource {
   dbCreate = "update"
   jndiName = "jdbc/cms"
  }
 }
}

红色部分是数据源的 jndi 名,grails文档上写的是 jndiName = "java:comp/env/myDataSource" ,经验证,不通过,需写成红色部份。
2.配置grails的UrlMapping.groovy

加上:

static excludes = ["/images/**", "/css/**"]

这里配置的目的是,让glassfish来处理静态资源。

3.配置备用文档

你可能需要做,形如www.xxx.com/uploads/images/xxx.jpg的一个目录映射。方法:

在您的grails项目中WEB-INF目录下,创建sun-web.xml

<!DOCTYPE sun-web-app PUBLIC '-//Sun Microsystems, Inc.//DTD Sun ONE Application Server 7.0 Servlet 2.3//EN' 'http://www.sun.com/software/sunone/appserver/dtds/sun-web-app_2_3-0.dtd'>

<sun-web-app>
   <property name="alternatedocroot_1" value="from=/uploads/* dir=G:\java\webapp\xxx\" />
 <locale-charset-info>
 <parameter-encoding default-charset="UTF-8" />
 </locale-charset-info>
</sun-web-app>

这样,形如www.xxx.com/uploads/images/xxx.jpg会,映射到 G:\java\webapp\xxx\uploads\images\xxx.jpg

注意:from=/uploads/*  中的 /uploads 会追加到dir目录路径后面,所以创建目录时,需要注意,否则无法映射。

这样配置以后,浏览器中输入www.xxx.com/uploads 时,会显示这个目录下的所有文件,和文件夹。您可能不希望这样,可以编辑glassfishv3-prelude\glassfish\domains\yourdomain\config\default-web.xml文件,找到:

<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>false</param-value>
    </init-param>

    <load-on-startup>1</load-on-startup>
  </servlet>

红色部份改为false,默认为true。改成false后,您就可以禁止目录访问了。

我同时在tomcat6上也部署过同样的grails应用。从感观上,glassfishv3下面跑的比tomcat6下跑得快很多。应用中有很多图片,glassfishv3处理静态资源和性能上,从感观上可以感到明显差异。既然感观上能感觉出来了,就先不用工具做毫秒级的性能比较了。

不信,您自己个比较吧。

加载中
返回顶部
顶部