ASF Tomcat(在本文中简称为Tomcat )是由Apache Software Foundation(ASF)开发的开源Web服务器和servlet容器。 Tomcat具有出色的性能,并且已经与来自世界各地的顶尖开发人员合作。 与以前的版本相比,Tomcat V7实现了Servlet 3.0和Java™Server Pages(JSP)2.2规范,并为包括IBM i在内的大多数操作系统提供了许多增强功能。 几年前,IBM i实际上在IBM i中包括了Tomcat。 IBM发行的最后一个版本是版本3.2.4。 本文所涵盖的不是这种支持。 不将Tomcat包含在IBM i中的主要原因之一是,Tomcat是纯Java应用程序,可以轻松,轻松地在IBM i上下载并启动,就像您将在本文中看到的那样。
IBM HTTP Server for i是一个Web服务器实现,它基于Apache Software Foundation提供的开源服务器代码,并且针对IBM i环境进行了优化。 适用于IBM i 7.1的i上的HTTP Server基于Apache 2.2.11,并且所有与HTTP Server相关的安全漏洞(称为常见漏洞和披露[CVE])均已通过HTTP Server程序临时修订(PTF)进行了修补,以确保PCI合规性。 很长时间以来,IBM i团队一直在使用IBM i版本的Apache HTTP服务器。 由于HTTP服务器建立在C之上,因此需要特别为IBM i创建二进制文件,以利用IBM i OS带来的优势。 自2000年以来,此支持已成为DG1产品的一部分。
将Tomcat和HTTP Server for i两种技术结合在一起,以充分利用它们在IBM i平台边缘的优势,是一个很好的解决方案。 本文以IBM i 7.1和Tomcat 7.0.28为例。 在IBM i 6.1上,同样的支持也将同样运行。 您只需要替换正确的IBM i 6.1实体即可。
Tomcat服务器可以连接到IBM i上的本地或远程HTTP Server。 图1和图2分别说明了不同的情况。
上一节提供了针对i的Tomcat和HTTP Server的基本介绍。 为了使您的Web应用程序在Tomcat上成功运行,需要以下许可程序,PTF和软件。
许可程序 Tomcat V7可以在Java Development Kit(JDK)1.6 32位或JDK 1.6 64位上运行。 本文以JDK 1.6 32位为例。 5770-SS1选项30 QSH 5770-DG1 *适用于i的BASE IBM HTTP Server 5761-JV1 * BASE Java Java开发人员工具包 5761-JV1选项11 Java SE 6 32位 所需的PTF 适用于5770DG1的最新PTF组(最低SF99368-14级) Java的最新PTF组(最低SF99572-10级) 非授权软件 Tomcat不是IBM i上的许可程序。 二进制映像可以从Apache网站下载。 发行的Tomcat V7.0.28在准备好所有软件之后,执行以下步骤以在IBM i上安装Tomcat V7.0.28。
将Tomcat V7.0.28发行版上载到IBM i,并将其放置在集成文件系统目录中,例如/ home / download。 在Qshell中提取Tomcat分发文件。 cd / home /下载 jar -xvf apache-tomcat-7.0.28.zip 设置JAVA_HOME环境变量。 为了启动和运行Tomcat,它需要知道Java虚拟机(JVM)的位置。 该信息需要添加到Tomcat配置文件中。 编辑Tomcat配置文件: /home/download/apache-tomcat-7.0.28/bin/setclasspath.sh。 将Java主目录信息添加到文件中。 以下是Java主页信息。 导出-s JAVA_HOME = / QOpenSys / QIBM / ProdData / JavaVM / jdk60 / 32bit /现在,Tomcat已成功安装在IBM i上。 如果要停止Tomcat,请在Qshell中运行/home/download/apache-tomcat-7.0.28/bin/shutdown.sh脚本。
下一节介绍如何将HTTP Server for i与Tomcat关联以在IBM i上创建完整的生产Web环境。
执行以下步骤,将i的HTTP Server与Tomcat关联。
为i创建一个HTTP Server实例。 在将HTTP Server与Tomcat关联之前,必须存在用于我的HTTP Sever实例。 IBM Web Administration for i(http://your.server.name:2001/HTTPAdmin)可以帮助为i创建HTTP服务器实例。 请参阅IBM i信息中心,以获取有关为i创建HTTP Server实例的更多详细信息。 本文以实例httpserver(根目录:/ www / httpserver,端口:5555)为例,以演示如何在IBM i上配置i的HTTP Server并将其与Tomcat关联。 为i配置HTTP服务器。 为了将HTTP Server for i与Tomcat关联,需要使用Tomcat插件模块作为HTTP Server和Tomcat之间的连接器,以将来自HTTP Server for i的请求路由到Tomcat,并将响应从Tomcat返回到HTTP Server。 。 5770DG1许可证程序包含的默认Tomcat插件服务程序是QHTTPSVR / QZTCJK。 将server.xml从Tomcat复制到HTTP Server for i。 如果Tomcat和i的HTTP Server位于同一IBM i服务器上,请将server.xml从/home/download/apache-tomcat-7.0.28/conf目录直接复制到/ www / httpserver / conf目录。 如果Tomcat和HTTP Server for i安装在不同的IBM i服务器上,请将server.xml从Tomcat所在的服务器复制到HTTP Server所在的服务器。 生成worker.properties。 在/ www / httpserver / conf目录中创建worker.properties文件。 将以下代码行添加到worker.properties文件中: worker.list=worker1 worker.worker1.type=ajp13 worker.worker1.port=8009 worker.worker1.host=f4p04.cn.ibm.com属性文件的描述:
worker.list = worker1 Tomcat worker的名称worker1用作默认名称。 worker.worker1.type = ajp13 默认情况下,用于在HTTP Server for i和Tomcat之间交换数据的协议ajp13。 worker.worker1.port = 8009 默认情况下,使用HTTP Server for i和Tomcat之间的通信端口8009。 worker.worker1.host Tomcat运行所在的服务器的IP地址或主机名。 如果Tomcat和HTTP Server位于不同的服务器上,则该值表示Tomcat所在的服务器。 编辑配置文件。 编辑/www/httpserver/conf/httpd.conf文件。 将Tomcat插件相关的指令添加到httpd.conf。 LoadModule jk_module /QSYS.LIB/QHTTPSVR.LIB/QZTCJK.SRVPGM JkWorkersFile /www/ct/conf/workers.properties JkLogFile /www/ct/logs/jk.log JkLogLevel debug JKMount /manager/* worker1现在,用于i和Tomcat的HTTP Server已在IBM i和Tomcat示例应用程序Tomcat Application Manager上关联在一起,可以通过用于i的HTTP服务器进行访问。 本部分介绍如何在Tomcat上部署IBM i Web应用程序。 提供了一个示例应用程序(TomcatTestServlets),以使用IBM Toolbox和本机IBMDB2®JDBC驱动程序测试数据库查询的时间(请参阅附件1和2以获取.war文件和源代码)。
此样本使用数据源,您需要编辑配置文件以将数据源添加到Tomcat配置文件和您的应用程序中。 如果您的应用程序不需要数据源,则可以忽略此步骤。 编辑/home/download/apache-tomcat-7.0.28/conf/server.xml配置文件。 在<GlobalNamingResources>节点中插入以下行以添加数据源: Resource auth="Container" driverClassName="com.ibm.db2.jcc.DB2Driver" name="jdbc/TEST" username="test" password="test" type="javax.sql.DataSource" url="jdbc:db2://ip | hostname:port/DBName" maxActive="8" maxIdle="4" maxWait="10000"/>新的配置文件server.xml如下所示:
资源属性说明:
auth:数据源的身份验证类型。 该值必须为Application或Container 。 默认值为Container 。 driverClassName:要使用的JDBC驱动程序的标准Java类名称。 name:数据源的合格名称。 username:要传递给JDBC驱动程序的数据库用户名 password:要传递给JDBC驱动程序的数据库密码。 类型: Web应用程序对此资源执行查找时期望的合格Java类名称。 url:要传递给JDBC驱动程序的连接URL。 initialSize:池初始化期间将在池中创建的初始连接。 默认值:0 maxActive:可以同时从该池分配的最大连接数。 默认值:8。 minIdle:同时处于空闲状态的最小连接数。 默认值:0 maxIdle:可以同时处于空闲状态的最大连接数。 默认值:8 maxWait:池等待返回连接的最大持续时间(以毫秒为单位)。 默认值:-1(无限) 编辑/home/download/apache-tomcat-7.0.28/conf/context.xml配置文件。 将以下行插入<context />节点中。 此项指定到server.xml中定义的数据源的链接: 编辑TomcatTestServlets / WebContent / WEB-INF / web.xml配置文件。 将以下行添加到该文件的末尾。 这些行指定对server.xml中定义的数据源的引用: name:指向server.xml中定义的数据源的链接的限定名称。 global:全局Java命名和目录接口(JNDI)上下文中链接的全局资源的名称。 类型: Web应用程序对此资源执行查找时期望的合格Java类名称编辑配置文件:TomcatTestServlets / WebContent / WEB-INF / web.xml。 将以下行添加到文件的末尾。 这些行指定对server.xml中定义的数据源的引用:
resource-ref res-ref-name /jdbc/TEST /res-ref-name res-type javax.sql.DataSource res-type res-auth Container res-auth /resource-ref新的配置文件web.xml出现,如图14所示。
( 注意:要下载代码,请右键单击链接,然后选择另存为或将链接另存为 。)
TomcatTestServlets-源代码:今天,许多客户希望在IBM i上使用Tomcat,因为IBM i是运行任何高度多线程工作负载(例如Tomcat)的绝佳平台。 但是,当前IBM i上的IBM许可程序不包含Tomcat。 本文为您提供了一个可行的解决方案,说明了如何在IBM i上部署和定制Tomcat,将Tomcat与i的HTTP Server关联以及如何在全面生产的Web环境中运行Web解决方案。 此外,计划在将来发布的文章将重点介绍一些高级主题,例如运行在IBM i上安装Tomcat V7部分中提到的运行Tomcat指定的子系统,在IBM i上对Tomcat和HTTP Server的性能进行调整,等等。 享受您在IBM i!上使用Tomcat的经验。
翻译自: https://www.ibm.com/developerworks/ibmi/library/i-websolution-asf-tomcat/index.html