5.3.2. 部署 WAR 至 Jetty
以下是一个部署 WAR 包到 Jetty web 服务器的示例,假设应用程序使用的是 PostgreSQL 数据库。
使用 Studio 中的 Deployment > WAR settings 界面或者手动在 build.gradle 末尾添加 buildWar 任务。
task buildWar(type: CubaWarBuilding) {
appHome = '${app.home}'
appProperties = ['cuba.automaticDatabaseUpdate': 'true']
singleWar = false
}
需要注意的是,这里给 Middleware 和 web 客户端构建了单独的两个 WAR 文件。
从命令行启动
buildWar
任务(假设已经预先创建了 Gradle wrapper):gradlew buildWar
如果成功的话,会在项目的
build\distributions\war
目录创建app-core.war
和app.war
。创建一个应用程序主目录目录,比如,
c:\work\app_home
。下载并安装 Jetty 到本地目录,比如
c:\work\jetty-home
。本示例使用jetty-distribution-9.3.6.v20151106.zip
测试通过。创建
c:\work\jetty-base
目录,并且在这个目录打开命令行窗口执行以下命令:java -jar c:\work\jetty-home\start.jar --add-to-start=http,jndi,deploy,plus,ext,resources
创建
c:\work\jetty-base\app-jetty.xml
文件,添加以下内容(假设使用名为test
PostgreSQL 数据库):<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-" "http://www.eclipse.org/jetty/configure_9_0.dtd">
<Configure id="Server" class="org.eclipse.jetty.server.Server">
<New id="CubaDS" class="org.eclipse.jetty.plus.jndi.Resource">
<Arg></Arg>
<Arg>jdbc/CubaDS</Arg>
<Arg>
<New class="org.postgresql.ds.PGSimpleDataSource">
<Set name="ServerName">localhost</Set>
<Set name="PortNumber">5432</Set>
<Set name="DatabaseName">test</Set>
<Set name="User">cuba</Set>
<Set name="Password">cuba</Set>
</New>
</Arg>
</New>
</Configure>
MS SQL 数据库的
app-jetty.xml
文件需要使用下面这个模板:<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-" "http://www.eclipse.org/jetty/configure_9_0.dtd">
<Configure id='wac' class="org.eclipse.jetty.webapp.WebAppContext">
<New id="CubaDS" class="org.eclipse.jetty.plus.jndi.Resource">
<Arg/>
<Arg>jdbc/CubaDS</Arg>
<Arg>
<New class="org.apache.commons.dbcp2.BasicDataSource">
<Set name="driverClassName">com.microsoft.sqlserver.jdbc.SQLServerDriver</Set>
<Set name="url">jdbc:sqlserver://server_name;databaseName=db_name</Set>
<Set name="username">username</Set>
<Set name="password">password</Set>
<Set name="maxIdle">2</Set>
<Set name="maxTotal">20</Set>
<Set name="maxWaitMillis">5000</Set>
</New>
</Arg>
</New>
</Configure>
或许(比如对于 MS SQL 数据库),需要下载以下这些 JAR 并且添加到
c:\work\jetty-base\lib\ext
目录。commons-pool2-2.4.2.jar
commons-dbcp2-2.1.1.jar
commons-logging-1.2.jar
将下面这些添加到
c:\work\jetty-base\start.ini
文件的开头:--exec
-Xdebug
-agentlib:jdwp=transport=dt_socket,address=8787,server=y,suspend=n
-Dapp.home=c:\work\app_home
-Dlogback.configurationFile=c:\work\app_home\logback.xml
# ---------------------------------------
app-jetty.xml
拷贝数据库的 JDBC 驱动到
c:\work\jetty-base\lib\ext
目录。可以从 CUBA Studio 的lib
目录或者项目的build\tomcat\lib
目录拷贝这些驱动。比如对于 PostgreSQL,驱动文件是postgresql-9.1-901.jdbc4.jar
。拷贝 WAR 文件到
c:\work\jetty-base\webapps
目录。在
c:\work\jetty-base
目录打开命令行窗口并且执行:java -jar c:\work\jetty-home\start.jar
在浏览器打开
http://localhost:8080/app
。