精华内容
下载资源
问答
  • was:WebSphere Application Server ihs:IBM HTTP Server 服务:was中的Server 应用:was服务中部署的应用 单元:was中的Cell 节点:was中的Node 服务端口:was的server监听的端口 虚拟主机:was的应用可...

    以下对Websphere部署步骤及问题处理进行了详细说明,包括SSL密钥库生成、HTTPS配置、解决同一个was服务中部署多个应用时session冲突问题、Websphere参数优化、session持久化、web.xml更新问题、在Websphere控制台中查看运行状态等。

    1.  名词说明

    was:WebSphere Application Server

    ihs:IBM HTTP Server

    服务:was中的Server

    应用:was服务中部署的应用

    单元:was中的Cell

    节点:was中的Node

    服务端口:was的server监听的端口

    虚拟主机:was的应用可访问的端口,必须存在相同端口号的服务端口才能访问

    上下文根:was的应用访问URL的最后一部分(不包含参数),如http://ip:port/context?arg中的/context

    nd版was:Network Deploy,可使用was的软集群,不同服务器之间可实现会话复制。was控制台的进程与was Server的进程独立。一个Node可以安装多个Server。除了was Server的进程外,还包括node与dmgr的进程。

    base版was:不可使用was的软集群,不同服务器之间不可实现会话复制。was控制台的进程与was Server的进程为同一个进程。一个Node只能安装一个Server。除了was Server的进程外,不包括node与dmgr的进程。

    2.  was通用部署步骤

    以下步骤在was base版本8.5测试,不同版本的was可能存在差异。修改了was的配置后,通常需要重启was Server才能生效。

    2.1     说明

    以下步骤中各项配置的值仅起说明使用,请以实际需要的值为准。

    2.2     SSL密钥库生成

    若应用使用HTTPS访问,需要先生成SSL密钥库,在应用所在的每台服务器执行以下操作(不同服务器使用相同命令生成的密钥库文件与密钥请求文件均不相同,因此需要在每台服务器均执行):

    a.   使用was用户,进入was的java/bin目录,/was/IBM/WebSphere/AppServer/java/bin

    b.   执行以下命令,在当前目录生成密钥库文件

    参数

    说明

    -keystore

    指定生成的keystore文件

    -alias

    密钥别名,固定为server(下同)

    -storepass与-keypass

    密码,需修改

    -dname,CN=

    使用HTTPS访问的域名(若使用IP访问则应为IP)

    -validity

    有效天数,7300约20年

    命令如下:

    keystore=keystore.jks

    alias=server

    pwd=xxxxxx

    url=cscsr.szrcb.net

    validity=7300

     

    ./keytool -genkey -alias $alias -keyalg RSA -keysize 2048 -keystore $keystore -storetype jks -storepass $pwd -keypass $pwd -dname "CN=$url, OU=srcb, O=srcb, L=sz, ST=gd, C=CN" -validity $validity

    若执行成功,无提示;若提示“keytool 错误:java.lang.Exception: 未生成密钥对,别名 <server> 已经存在”,说明别名为server的密钥库文件已存在,需删除。

    c.   执行以下命令,在当前目录生成证书请求文件certreq-xx.pem,xx为当前服务器的IP尾号,用于区分不同服务器生成的密钥请求文件

    pem=certreq-xx.pem

    alias=server

    pwd=xxxxxx

     

    ./keytool -certreq -alias $alias -sigalg MD5withRSA -file $pem -keystore keystore.jks -keypass $pwd -storepass $pwd

    若执行成功,无提示

    d.   将生成的certreq-xx.pem发送给CA,生成每台服务器的证书,需要告知CA生成keystore文件时使用的域名

    e.   将CA提供的每台服务器的证书文件xx.cer分别上传至对应服务器的/was/IBM/WebSphere/AppServer/java/bin目录,将CA的根证书也上传至该目录

    f.   执行以下命令,将CA根证书root.cer导入密钥库,会提示“信任此证书吗?[no]:”,输入“y”并回车

    keystore=keystore.jks

    rootcer=root.cer

    pwd=xxxxxx

     

    ./keytool -import -alias intermediate -keystore $keystore -trustcacerts -storepass $pwd -file $rootcer

    若执行成功,提示“证书已添加到密钥库中”

    g.   执行以下命令,将CA生成的服务器证书xx.cer导入密钥钥库,

    keystore=keystore.jks

    alias=server

    pwd=xxxxxx

    cert=xx.cer

     

    ./keytool -import -alias $alias -keystore $keystore -trustcacerts -storepass $pwd -file $cert

    若执行成功,提示“证书应答已安装在密钥库中”

    提示“keytool 错误:java.lang.Exception: 应答中的公用密钥与密钥库中的公用密钥不匹配”,说明CA提供的证书有问题

    h.   将keystore.jks复制到保存密钥的目录,如/was/key

    i.   执行以下命令,导出服务器证书(导出的证书与CA提供的相同,可不执行)

    keystore=keystore.jks

    alias=server

    pwd=xxxxxx

    exportcert=xx.cer

     

    ./keytool -export -alias $alias -keystore $keystore -file $exportcert -storepass $pwd

    若导出成功,提示“证书存储在文件 <export-xx.cer> 中”

    2.3     was通用部署步骤

    2.3.1  上传数据库驱动程序至服务器

    该步骤仅需在每台服务器执行一次。

    将ojdbc6.jar上传至${WAS_INSTALL_ROOT}/lib目录下。

    WAS_LIBS_DIR与WAS_INSTALL_ROOT定义在“环境->WebSphere 变量”中。

    WAS_INSTALL_ROOT在Linux下一般为/was/IBM/WebSphere/AppServer,Windows下一般为D:\IBM\WebSphere\AppServer。

    说明:

    oracle 11g,JDK 1.6,需要使用驱动ojdbc6.jar,驱动程序与oracle及JDK版本的对应关系可在oracle官网查看。ojdbc6.jar可从测试环境oracle服务器获取,所在目录如“/soft/product/11.2.0.3/dbh/jdbc/lib”。

    2.3.2  创建JDBC提供程序

    该步骤仅需在每个Node执行一次。

    a.   新建JDBC提供程序,作用域选择单元

    b.   设置JDBC提供程序基本信息

    c.   设置JDBC驱动程序文件的类路径,“类路径”此时不需修改,将“另存为WebSphere变量xxx的目录位置”修改为“${WAS_INSTALL_ROOT}/lib”。

    d.   完成

    e.   保存

    f.   点击刚生成好的JDBC提供程序“Oracle JDBC Driver”

    g.   修改类路径为“${WAS_INSTALL_ROOT}/lib/ojdbc6.jar”,保存。ojdbc6.jar驱动可用于10g与11g的oracle数据库。

    2.3.3  创建J2C认证数据(存储数据库用户密码)

    该步骤仅需为每个数据库执行一次。

    a.   打开“J2C认证数据”

    b.   新建

    c.   设置“别名”等信息,“用户标识”为数据库用户名,密码为数据库密码,保存

    建议填写描述,否则启动时日志会提示“找不到 ConnectionFactory 或 DataSource [数据源名字] 的 mappingConfigAlias。”。

    2.3.4  创建数据源

    a.   新建数据源,作用域选择单元

    b.   设置数据源信息

    c.   选择之前创建的JDBC提供程序

    d.   设置数据源URL(域名需要在hosts文件中设置)

    e.   选择对应的J2C认证信息,完成,保存

    2.3.5  创建虚拟主机

    a.   新建虚拟主机

    b.   设置虚拟主机名字,保存

    c.   点击刚创建的虚拟主机

    d.   点击“主机别名”,新建

    e.   设置需要的端口

    2.3.6  服务端口设置

    a.   选择需要设置的服务

    b.   点击“端口”,新建

    c.   设置端口属性。“指定端口名”为当前新建的端口名字,“主机”为*,不能使用localhost,否则无法访问。“端口”应与对应虚拟主机设置的端口相同。确定,保存。新增或修改端口后,需要重启was的server才能生效。

    2.3.7  服务Web容器传输链设置(HTTP)

    a.   选择需要设置的服务

    b.   点击“Web容器传输链”,新建

    c.   输入传输链名称,传输链模板选择“WebContainer”(HTTP)

    d.   选择刚创建的端口,完成,保存

     

    2.3.8  SSL配置

    a.   将“SSL密钥库生成”步骤生成的keystore.jks文件从/was/IBM/WebSphere/AppServer/java/bin移动到/was/key目录中

    b.   进入SSL的密钥库和证书配置界面

    c.   选择“SSL密钥库”,新建

    d.   输入密钥库的名称,“路径”填入jks文件的路径,输入jks文件密码,类型选择“JKS”

    e.   进入SSL配置界面

    f.   新建SSL配置

    g.   输入SSL配置名称,“信任库名称”与“密钥库名称”选择上一步骤新建的密钥库,点击“获取证书别名”,“缺省服务器证书别名”与“缺省客户机证书别名”全自动变成密钥库的别名(即创建密钥库时-alias的参数值)

    h.   更新证书文件后,若未修改密码,重启was服务即可生效,不需重新进行配置

    2.3.9  服务Web容器传输链设置(HTTPS)

    与配置HTTP的传输链相比,有以下区别:

    a.   输入传输链名称,传输链模板选择“WebContainer-Secure”(HTTPS)

    b.   保存之后,点击刚配置了传输链,点击“SSL入站通道(SSL_X)”

    c.   “特定于此端点”选择上一步骤新建的SSL配置。

    完成以上配置后,需在客户端安装SSL根证书,重启was服务,可使用HTTPS链接登录。

    2.3.10     生成war包

    cd 到需要打包的目录,即“WEB-INF”目录所在的目录,执行以下命令打包

    jar -vcf xxx.war *

    2.3.11     上传war包至服务器

    将生成的war包上传到服务器指定目录,如/was/publish

    2.3.12     部署应用

    a.   安装应用

    b.   选择需要部署的war包

    c.   选择“快速路径”

    d.   设置“安装应用程序的目录”

    e.   将模块映射至服务器

    f.   选择需要的JNDI名称

    g.   选择需要的虚拟主机

    h.   设置上下文根,完成,保存

    2.3.13     更新应用

    使用“更新”功能即可使用新的war包部署应用,不需要先卸载再重新安装

    2.4     解决同一个was服务中部署多个应用时session冲突问题

    若同一个was服务中若部署了多个应用,由于应用的默认session名字均为JSESSIONID,当使用浏览器登录同一was服务(使用相同的IP或域名)的不同应用时,可能产生session冲突的问题,导致服务器无法正确判断浏览器的登录状态。可通过网络层面与应用层面解决。

    2.4.1  网络层面解决

    为同一个was服务的不同应用申请不同的域名,每个应用使用不同的域名访问,session不会出现冲突,可解决上述问题。

    新呼叫中心采用该方法解决上述问题。

    2.4.2  应用层面解决

    为同一个was服务的不同应用设置不同的session名字,可解决上述问题,步骤如下:

    a.   打开“WebSphere企业应用程序”,打开需要设置的应用

    b.   打开“会话管理”

    c.   钩选“覆盖会话管理”,打开“启用cookie”

    d.   修改“cookie名”,如使用应用简称作为前缀或后缀,使其不与同一个was服务中的其他应用的冲突。完成以上修改后,不需重启was服务即可生效。

    2.5     修改或移除访问was时返回的HTTP头中的Server字段

    默认配置下,访问was控制台或was部署的应用时,返回的HTTP头中会包含Server字段,内容为“WebSphere Application Server/[was版本号]”,如“Server: WebSphere Application Server/8.0”。

    若需要修改或移除上述Server字段,需要在was应用所使用的Web容器传输链的HTTP入站通道新增定制属性,如下图所示(假设was应用所使用的Web容器传输链名称为“csr_chain”)。

    当需要移除上述Server字段时,需要添加的属性名称为“RemoveServerHeader”,值为“true”。

    当需要修改上述Server字段时,需要添加的属性名称为“ServerHeaderValue”,值为所需返回的HTTP头中的Server字段值。如将值设为“xxx”,返回的Server字段内容为“Server: xxx”。

    修改访问was时返回的HTTP头中的Server字段,可判断浏览器当前访问的服务器,便于定位会话丢失与会话保持问题。

    2.6     was参数优化

    2.6.1  JAVA虚拟机堆大小设置

    a.   选择需要设置的服务

    b.   打开“Java和进程管理”“进程定义”

    c.   打开“其他属性”“Java虚拟机”

    d.   设置“初始堆大小”与“最大堆大小”,点击“确定”“保存”

    2.6.2  Web容器线程池设置

    a.   选择需要设置的服务

    b.   打开“其他属性”“线程池”

    c.   打开“WebContainer”

    d.   设置最小与最大线程数,点击“确定”“保存”

    2.6.3  数据源连接池设置

    a.   打开“资源”“JDBC”“数据源”

    b.   打开需要修改的数据源

    c.   打开“其他属性”“连接池属性”

    d.   修改最大与最小连接数,点击“确定”“保存”

    2.6.4  日志参数设置

    a.   进入服务的日志设置界面

    b.   打开“JVM日志”界面

    c.   System.out与System.err均设为最大大小:20MB,历史日志文件最大数:10

    2.7     session持久化

    2.7.1  was配置

    a.   打开需要配置session持久化的应用的会话管理界面

    b.   钩选“覆盖会话管理”以及“启用cookie”并保存,否则会使用对应的Server的会话管理设置,session持久化设置不会生效。再点击“分布式环境设置”。

    c.   点击“数据库”;

    d.   在“数据源JNDI名称”处写入was应用所使用的数据源JNDI名称,在“用户标识”处写入对应数据库用户名,在“密码”处写入对应数据库用户的密码,“DB2行大小”选择“ROW_SIZE_4KB”,“表空间名”处写入用于保存 session的数据库表对应的表空间,“使用多行模式”需钩选,使session信息在数据库中按多行保存。

    e.   打开对应的was Server配置;

    f.   点击“Web容器设置”,“Web容器”;

    g.   点击“定制属性”;

    h.   点击“新建”,创建名称为“UseOracleBLOB”,值为“true”的属性。

    若不设置UseOracleBLOB属性,当session中有值超过2000字节时(保存session的表中的SMALL字段长度为2000),System.out日志中会出现以下报错

    [15-5-3 14:43:16:792 CST] 0000006f WASSession    E DatabaseHashMapMR handlePropertyHits SESN0057E: 将应用程序数据更改存储到数据库时出错。

    [15-5-3 14:43:16:793 CST] 0000006f WASSessionCor E DatabaseHashMapMR handlePropertyHits 异常为:

                                     java.sql.SQLException: ORA-01460: 转换请求无法实施或不合理

     

        at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)

        at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)

        at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:590)

        at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1973)

        at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:1119)

        at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java:2191)

        at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java:2064)

        at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2989)

        at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:658)

        at com.ibm.ws.rsadapter.jdbc.WSJdbcPreparedStatement.pmiExecuteUpdate(WSJdbcPreparedStatement.java:1185)

        at com.ibm.ws.rsadapter.jdbc.WSJdbcPreparedStatement.executeUpdate(WSJdbcPreparedStatement.java:802)

        at com.ibm.ws.session.store.db.DatabaseHashMapMR.handlePropertyHits(DatabaseHashMapMR.java:262)

        at com.ibm.ws.session.store.db.DatabaseHashMap.persistSession(DatabaseHashMap.java:2123)

        at com.ibm.ws.session.store.common.BackedHashMap.updateSession(BackedHashMap.java:469)

        at com.ibm.ws.session.store.common.BackedHashMap.put(BackedHashMap.java:543)

        at com.ibm.ws.session.store.common.BackedSession.flush(BackedSession.java:240)

        at com.ibm.ws.session.store.common.BackedSession.flush(BackedSession.java:225)

        at com.ibm.ws.session.store.common.BackedHashMap.doTimeBasedWrites(BackedHashMap.java:992)

        at com.ibm.ws.session.store.common.BackedStore.runTimeBasedWrites(BackedStore.java:125)

        at com.ibm.ws.session.WsTBWSessionStorer.alarm(WsTBWSessionStorer.java:118)

        at com.ibm.ejs.util.am._Alarm.run(_Alarm.java:133)

        at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1783)

    2.7.2  数据库配置

    IBM提供的数据库脚本如下:

    CREATE TABLE SESSIONS  (

      ID               VARCHAR(128) NOT NULL ,

      PROPID           VARCHAR(128) NOT NULL ,

      APPNAME          VARCHAR(128) NOT NULL,

      LISTENERCNT      SMALLINT ,

      LASTACCESS       INTEGER,

      CREATIONTIME     INTEGER,

      MAXINACTIVETIME  INTEGER ,

      USERNAME         VARCHAR(256) ,

      SMALL            RAW(2000),

      MEDIUM           BLOB,

      LARGE            RAW(1)

      )

    was会自己执行添加索引的语句,将表空间修改为实际表空间后(以cc_session为例),实际建表语句如下:

    DROP TABLE sessions CASCADE CONSTRAINTS;

     

    CREATE TABLE sessions

    (

      ID               VARCHAR2(128 CHAR)           NOT NULL,

      propid           VARCHAR2(128 CHAR)           NOT NULL,

      appname          VARCHAR2(128 CHAR)           NOT NULL,

      listenercnt      INTEGER,

      lastaccess       INTEGER,

      creationtime     INTEGER,

      maxinactivetime  INTEGER,

      username         VARCHAR2(256 CHAR),

      small            RAW(2000),

      medium           BLOB,

      LARGE            RAW(1)

    )

    TABLESPACE cc_session

    PCTUSED    0

    PCTFREE    10

    INITRANS   1

    MAXTRANS   255

    STORAGE    (

                INITIAL          64 k

                NEXT             1 m

                MINEXTENTS       1

                MAXEXTENTS       UNLIMITED

                PCTINCREASE      0

                BUFFER_POOL      DEFAULT

               )

    LOGGING

    NOCOMPRESS

    LOB (medium) STORE AS

          ( TABLESPACE  cc_session

            ENABLE      STORAGE IN ROW

            CHUNK       8192

            PCTVERSION  0

            NOCACHE

            STORAGE    (

                        INITIAL          64 k

                        NEXT             1 m

                        MINEXTENTS       1

                        MAXEXTENTS       UNLIMITED

                        PCTINCREASE      0

                        BUFFER_POOL      DEFAULT

                       )

          )

    NOCACHE

    NOPARALLEL

    MONITORING;

     

     

    CREATE UNIQUE INDEX sess_index ON sessions

    (ID, propid, appname)

    LOGGING

    TABLESPACE cc_session

    PCTFREE    10

    INITRANS   2

    MAXTRANS   255

    STORAGE    (

                INITIAL          64 k

                NEXT             1 m

                MINEXTENTS       1

                MAXEXTENTS       UNLIMITED

                PCTINCREASE      0

                BUFFER_POOL      DEFAULT

               )

    NOPARALLEL;

    3.  was重要目录与文件

    下文中的AppSrv01应为对应服务的实际名称。

    3.1     was日志目录

    应用中通过System.out,System.err输入的日志以及was服务启停日志的存储目录:

    /was/IBM/WebSphere/AppServer/profiles/AppSrv01/logs/server1

    3.2     jsp缓存目录

    /was/IBM/WebSphere/AppServer/profiles/AppSrv01/temp/[was的节点名字]/[was的服务名字]/[应用名字]/[应用war包名字]

    3.3     应用的WEB-INF目录被拷贝的目录

    was应用部署时,WEB-INF目录会被拷贝生成一个目录。更新应用的WEB-INF目录下的文件时,需将以下目录中的文件同时修改,因此应尽量将WEB-INF目录的文件移动到WEB-INF的子目录中去,方便后期维护。拷贝生成的目录路径如下:

    /was/IBM/WebSphere/AppServer/profiles/AppSrv01/config/cells/[was单元名字]/applications/[应用ear名字]/deployments/[应用war包名字]/[应用名字]/WEB-INF/

    当使用增量更新方式更新web.xml文件时,应用部署目录的WEB-INF目录以及应用的WEB-INF目录被拷贝的目录中的web.xml文件都需要替换。

    3.4  web.xml文件说明

    3.4.1  应用读取的web.xml

    当应用读取web.xml时,从应用的WEB-INF被拷贝的目录(见上文)中读取web.xml,而不是从应用部署目录的WEB-INF目录中读取web.xml。

    3.4.2  web.xml的web-app节点的version值的影响

    a.   web.xml的web-app节点的version值为2.4(或2.3)时

    <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"

        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee

        http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

    当web.xml的web-app节点的version值为2.4时,即文件头如上文所示时,应用部署目录的WEB-INF目录以及应用的WEB-INF目录被拷贝的目录中会出现ibm-datasource-ext.xml、ibm-web-bnd.xmi、ibm-web-ext.xmi、web.xml。

    若在web.xml文件中使用<resource-ref>字段定义了数据源引用,应用部署目录的WEB-INF目录以及应用的WEB-INF目录被拷贝的目录中的web.xml文件的<resource-ref>字段可能被was修改为类似“<resource-ref id="ResourceRef_xxx">”的形式。若通过替换web.xml文件进行更新,会导致web.xml文件中的数据源对应关系丢失,因此不能通过替换web.xml进行更新。

    在was控制台查看应用的部署描述符,如下图所示:

    b.   web.xml的web-app节点的version值为2.5时

    <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"

        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

    当web.xml的web-app节点的version值为2.5时,即文件头如上文所示时,应用部署目录的WEB-INF目录以及应用的WEB-INF目录被拷贝的目录中会出现ibm-datasource-ext.xml、ibm-metadata.xml、ibm-web-bnd.xml、ibm-web-ext.xml、web.xml、web_merged.xml。

    web.xml与web_merged.xml内容类似,经验证,应用会读取web.xml而不是web_merged.xml。

    若在web.xml文件中使用<resource-ref>字段定义了数据源引用,应用部署目录的WEB-INF目录以及应用的WEB-INF目录被拷贝的目录中的web.xml文件的<resource-ref>字段不会被修改,因此可以通过替换web.xml文件进行更新。

    无论web.xml的web-app节点的version值为2.3、2.4或2.5,应用安装后,应用部署目录的WEB-INF目录以及应用的WEB-INF目录被拷贝的目录中的web.xml文件的web-app节点均会被修改为“web-app id="WebApp_xxx"”的形式。若通过替换web.xml文件进行更新时,将“web-app id="WebApp_xxx"”的形式中的 id="WebApp_xxx"删除,不影响应用运行。

    在was控制台查看应用的部署描述符,如下图所示:

    c.   结论

    web.xml的web-app节点的version值应设置为2.5,而不是2.3或2.4,否则使用增量更新方式时,更新了web.xml会导致数据源对应关系丢失。

    3.4.3  web.xml与web_merged.xml

    应用读取web.xml时,若存在web_merged.xml,会从应用的WEB-INF被拷贝的目录(见上文)中读取web_merged.xml的内容;若不存在web_merged.xml,会读取web.xml的内容。

    4.  在was控制台中查看运行状态

    4.1     查看已加载的类

    4.2     性能查看

    需先启动监视(查看完后停止监视),打开页面后,在左侧选择需要查看的信息,可查看线程池、JDBC连接池、页面访问情况等,点击“查看模块”后会在右侧显示

    4.3     查看session情况

    查看was的session情况的链接为:http://[was服务器IP]:9080/servlet/com.ibm.ws.webcontainer.httpsession.IBMTrackerDebug

    必须安装并启动DefaultApplication.ear应用,若被卸载,可使用服务器中的安装文件“/was/IBM/WebSphere/AppServer/installableApps/DefaultApplication.ear”再次安装。

    示例如下:

    4.4     手工产生core文件

    在was控制台点击“故障诊断”“Java转储和核心”

    点击“堆转储”,会产生文件heapdump;点击“Java核心”,会产生javacore文件;点击“系统转储”,会产生core文件。

    以上文件生成目录一般为:/was/IBM/WebSphere/AppServer/profiles/AppSrv01,AppSrv01与was Server有关。以上文件可使用jca工具(IBM Thread and Monitor dump analyzer for Java)进行分析。

    5.  was其他说明

    5.1     was应用更新功能说明

    “替换整个应用程序”:将整个应用进行更新。

    “替换或添加单个模块”:不详。

    “替换或添加单个文件”:替换单个文件,当用于替换web.xml文件时,会将应用部署目录与WAS拷贝的WEB-INF目录中的web.xml文件全部替换,但不会像重新部署时修改web.xml的内容。

    “替换、添加或删除多个文件”:说明同上。

    5.2  nd版本启动顺序

    nd版was在启动was服务前需要先启动dmgr与node。

    服务

    原始启动脚本

    原始停止脚本

    查看进程

    dmgr

    /was/IBM/WebSphere/AppServer/profiles/Dmgr01/bin/startManager.sh

    同目录stopManager.sh

    ps -ef|grep dmgr

    node

    /was/IBM/WebSphere/AppServer/profiles/AppSrv01/bin/startNode.sh

    同目录stopNode.sh

    ps -ef|grep nodeagent

    5.3     was帮助文档

    https://was服务器IP:9043/ibm/help/index.jsp

    IBM Knowledge Center

    5.4  将控制台显示语言改为中文

    将IE选项的[语言]设置中,将中文设为首位,如下图。

    6.  使用was部署的应用开发相关

    6.1     URL中包含中文时的处理

    若URL中包含了中文,需在java中调用URLEncoder.encode(xxx,"utf-8");,或在js中调用encodeURI(xxx),对URL进行编码,否则中文会乱码。

    在jsp或Servlet中处理进行了编码的URL时,需调用URLDecoder.decode(request.getParameter("xxx"), "utf-8");对进行了编码的参数进行解码。使用was部署时,在调用request.getParameter()之前需要先调用request.setCharacterEncoding("UTF-8");,否则获取到的中文会乱码。

    在以弹出下载框形式返回待下载文件内容时,需对attachment;filename字段调用URLEncoder.encode(xxx,"utf-8");否则浏览器显示的下载框中文件名会乱码。

    6.2     SRVE0199E错误

    报错如下:

    [15-1-27 13:37:29:197 CST] 00000111 servlet       E com.ibm.ws.webcontainer.servlet.ServletWrapper service SRVE0068E: 应用程序 [csr_war] 中 servlet [action] 的其中一个服务方法抛出异常。创建的异常:[java.lang.IllegalStateException: SRVE0199E: 已获取了 OutputStream

        at com.ibm.ws.webcontainer.srt.SRTServletResponse.getWriter(SRTServletResponse.java:780)

        at com.sunyard.struts.RequestProcessor.process(RequestProcessor.java:91)

        at com.sunyard.struts.ActionServlet.process(ActionServlet.java:76)

        at com.sunyard.struts.ActionServlet.doGet(ActionServlet.java:81)

    Servlet1.2规定OutputStream只能获取一次,was8.5遵守此规定,tomcat未遵守此规定,因此代码中一次HTTP通信过程中,OutputStream不能获取多于一次。

    6.3     通过servlet请求无法下载附件时的处理

    通过servlet请求下载附件时,必须通过以下代码指定下载类型与文件名,否则可以打开下载提示框,但点击保存会失败。需增加下代码:

                response.setHeader("Content-Disposition","attachment; filename=\"" + outFilename + "\"");

                response.setContentType("application/x-msdownload");

    使用HTTPS访问时,还需调用以下代码。若不调用以下代码,IE会提示无法下载,使用chrome可以下载,与IE的特性有关。

                    response.setHeader("Pragma","public");

                    response.setHeader("Cache-Control","max-age=30");

    6.4     WEB-INF目录

    WEB-INF目录中的文件最好只保存一个web.xml文件,其他配置文件均需保存在WEB-INF目录的子目录中。

    使用Websphere部署应用时,WEB-INF目录中的文件会在应用部署目录之外的其他目录产生拷贝,在替换文件进行版本时,需要将两个目录中的文件都进行替换,不便于版本更新,因此WEB-INF目录中的文件最好只保存一个web.xml文件。

    6.5     web.xml文件

    web.xml文件中最好只保存不会修改的应用配置,若有应用配置可能需要经常修改,最好不要保存在web.xml文件中,而是保存在WEB-INF子目录中的其他配置文件内。

    web.xml文件中的web-app节点的version值应为2.5,即web.xml文件的文件头应如下:

    <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"

        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

    web.xml文件中的web-app节点的version值不应为2.4,即web.xml文件的文件头不应如下:

    <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"

        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee

        http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

    若不按照以上配置,可能会导致web.xml文件无法进行增量更新。具体原因见本文“5.4.2 web.xml的web-app节点的version值的影响”。

    展开全文
  • 今天部署一个JSF项目到Websphere上,因为本机开发都是用Tomcat,所以Log4j.properties文件信息如下:## $Revision: 1.2 $# $Date: 2010/07/19 03:29:48 $#log4j.rootLogger=INFO, DefLog#catalina.home 为读取系统...

    今天部署一个JSF项目到Websphere上,因为本机开发都是用Tomcat,所以Log4j.properties文件信息如下:

    #

    # $Revision: 1.2 $

    # $Date: 2010/07/19 03:29:48 $

    #

    log4j.rootLogger=INFO, DefLog

    #catalina.home 为读取系统环境变量的值

    log4j.appender.DefLog=org.apache.log4j.RollingFileAppender

    log4j.appender.DefLog.File=${catalina.home}/logs/flow.log

    log4j.appender.DefLog.DatePattern='.'yyyy-MM-dd'.log'

    log4j.appender.DefLog.maxBackupIndex=10

    log4j.appender.DefLog.maxFileSize=10MB

    log4j.appender.DefLog.Append=true

    log4j.appender.DefLog.layout=org.apache.log4j.PatternLayout

    log4j.appender.DefLog.layout.ConversionPattern=%5p [%t] [%d] (%c) - %m%n

    然后用Ant打包项目生成war档部署在Webphere上,输入地址访问报500内部错误,然后查找log信息,费了好大的劲在以下目录下找到了log档:

    (安装目录)\IBM\WebSphere\AppServer\profiles\AppSrv01\logs\server1 SystemOut.log

    路径比较难找,所以为了方便起见,我想指定简单的log信息路径如:D:\flow.log,该怎么办呢?

    1. 先改动Log4j的配置

    #

    # $Revision: 1.2 $

    # $Date: 2010/07/19 03:29:48 $

    #

    log4j.rootLogger=INFO, DefLog

    log4j.appender.DefLog=org.apache.log4j.RollingFileAppender

    log4j.appender.DefLog.File=D:/logs/flow.log

    log4j.appender.DefLog.DatePattern='.'yyyy-MM-dd'.log'

    log4j.appender.DefLog.maxBackupIndex=10

    log4j.appender.DefLog.maxFileSize=10MB

    log4j.appender.DefLog.Append=true

    log4j.appender.DefLog.layout=org.apache.log4j.PatternLayout

    log4j.appender.DefLog.layout.ConversionPattern=%5p [%t] [%d] (%c) - %m%n

    在WEB-INF所在的路径建立文件夹:META-INF/service,再建立名为org.apache.commons.logging.LogFactory的文件,其内容为

    org.apache.commons.logging.impl.LogFactoryImpl

    在web.xml文件里添加以下代码:

    com.system.Log4jInit

    Log4jInit.java代码如下:

    package com.system;

    import javax.servlet.ServletContextEvent;

    import javax.servlet.ServletContextListener;

    import org.apache.commons.logging.LogFactory;

    import org.apache.commons.logging.impl.Log4JLogger;

    import org.apache.log4j.PropertyConfigurator;

    public class Log4jInit implements ServletContextListener {

    public void contextInitialized(ServletContextEvent event) {

    String path = event.getServletContext().getRealPath("WEB-INF/classes/log4j.properties");

    LogFactory.getFactory().setAttribute("org.apache.commons.logging.Log", Log4JLogger.class.getName());

    PropertyConfigurator.configure(path);

    // System.out.println("log properties path : " + path);

    // Log logger = LogFactory.getLog(this.getClass());

    // logger.error("Log4jInit initial.........");

    }

    public void contextDestroyed(ServletContextEvent arg0) {

    }

    }

    展开全文
  • websphere部署war包

    千次阅读 2018-03-15 11:10:00
    通过websphere部署以及打包成war的web项目。 (1)安装配置war包,部署项目 登录websphere,进入websphere主页(依次选中) Applications --> Application Types --> websphere Enterprise Application -->...

    通过websphere部署以及打包成war的web项目。

    (1)安装配置war包,部署项目

    登录websphere,进入websphere主页(依次选中)

     Applications -->   Application Types --> websphere Enterprise Application --> install

    打开选择文件,选择需要上传的war包,然后点击next 。(这里需要一点点时间,因为需要将war包上传到websphere)

     

    上传完后,选中如图示,点击next

     

    开始进入step步骤。

    step1:选中Distribute Application ,选中 Create MBeans for resources,点击next

    step2:选中 select ,点击next.

    step3:选中select ,并右侧的虚拟主机使用 default_host(默认的就是default_host),点击next

    step4:在Context Root那一栏下面写上项目名,就是war包的前缀部分,用来访问这个项目(这里一定要写,不然就无法正常启动),点击next

           示例: 比如上传的是 Webdemo.war,Context Root目录下就写 /Webdemo

    step5:直接点击next.

    step6:点击finish.(等待项目安装)

     

    安装完之后,点击save(页面的下方位置,蓝色字体)

     

    此时,war包已经上传安装成功了。系统自动跳转到启动页面。

    选中刚刚上传的war包(WebdemoIn7.war),然后点击start。(启动成功时,右侧的红色叉叉会变成绿色箭头)

     

    可以开始尝试访问,在地址栏输入访问地址: https://安装websphere的主机IP:port/${Context Root栏填写的地址}     

    例如:    https://172.150.12.43:9043/WebdemoIn7 

     

    (2)如果访问出错, 错误内容类似:SRVE0255E: A WebGroup/Virtual Host to handle /p2pd/servlet/dispatch has not been defined.

    可通过以下步骤解决:

    检查项目配置

    1.  点击Applications -->  Application Types -->  Websphere enterprise ,点击部署出错的那个项目,例如 WebdemoIn7.war

     

    2.查看 Web Module properties 模块下面的 Virtual hosts

    3.选中 select,并且将virtual hosts选中为 default_host,然后点击 ok .

    之后会回到 configuration页面,点击上方的  save .

     

    检查环境配置

    第一步,点击 Environment --> Virtual Hosts ,然后选中 default_host

     

    第二步,点击 Host Aliases,检查有没有自己安装时配置访问websphere的端口

    如果没有就new一个,并且设置host  name为 * 。(这里主要配置host name 为  *,port为你安装websphere时的端口),点击 ok,然后 save .

     

    检测服务配置

    1). 依次选中 Servers --> Server Types -->  Websphere Application Servers ,然后选择右侧出现的那个服务,例如我的是 server1

     

    2).选择 Container Settings  --> Web Container Settings --> Web Container

    确定 Default_virtual_host指定的默认虚拟主机为  default_host ,然后点击 ok .  点击 save 。

     

    最后重新启动 websphere,再次访问项目,在地址栏中输入访问链接。 https://172.150.12.43:9043/WebdemoIn7  便能访问成功。

     

    错误解决方法参考链接:http://blog.csdn.net/jason_wang1989/article/details/47128603

    转载于:https://www.cnblogs.com/DFX339/p/8572445.html

    展开全文
  • 4、安装软件包,点击下一步 5、接收许可协议条款,下一步 6、选择共享... 参考链接: Websphere上如何部署war包 https://jingyan.baidu.com/article/363872ec2ae70b6e4ba16f83.html WebSphere 安装部署,发布web应用 ...

    0x01 下载安装

    1、在IBM官网下载安装包

    打开下载地址,需注册账户,登录后,选择Windows 64-bit下载

    3e3d0f87075cab8c759516cfe6e61d8e.png

    2、解压缩,运行install.exe文件

    36e2c87d3a4a7859bd6efeff63b965a9.png

    3、输入刚才注册的用户名和密码,并输入安全存储器的新主密码

    a272cbef7cd6062bd5b9c5091e01a909.png

    test A  c                                3 !

    d582c2e98538d24a58d4d10fc53b522d.png

    4、安装软件包,点击下一步

    690056231b0d1f6478fd583e0eba252a.png

    5、接收许可协议条款,下一步

    a1c48a30924d87d5ed3cd662afd2dead.png

    6、选择共享资源目录

    2893eb5fecce400121df8fdcceb0a767.png

    7、选择安装目录,下一步

    a0eb471c7d60f322759d471abe360936.png

    8、默认简体中文和英语,下一步

    750f71478e88827cdbc2540da600934a.png

    9、勾选继续在缺省java SDK上使用java SE 6

    447221e3ad79c174a27ae4e23a5df245.png

    10、开始安装

    b2ee492af5dacf88f0a7ff97c8e7afcd.png

    11、下一步,直到完成。

    0x02  新建应用程序服务器

    1、点击新建,选择应用程序服务器,一直Next

    34c59b3acd70bc8a9c1a7bcf09d7ac3d.png

    2、完成后,查看安装验证,注意服务器端口号为9080

    a0720aac640c79d37720d12e45536eef.png

    0x03 上传war包

    1、后台地址:https://192.168.204.148:9043/ibm/console/logon.jsp

    上传地方:应用程序>新建应用程序>新建企业应用程序

    f1d974723a115fd550dd99407e88f6da.png

    2、选择要上传的war包,下一步

    723161aaf39fe53f8ecad455d0c469ca.png

    3、一直下一步,步骤4注意填好“上下文根”,然后继续下一步,直到完成。

    7ca48e08c8450f9ff1c0fddfa360e69a.png

    4、点击保存到主配置

    b66202be20798e7e65d7a32e51304a9c.png

    5、应用程序>应用程序类型>WebSphere 企业应用程序,选中你上传的war包,点击启动 即可发布

    8d04a68e88d8b02cab36fdfc393c4a35.png

    6、shell地址:http://192.168.204.148:9080/hello/JspSpy.jsp

    6c0e6a780b1b53967d508354203738f7.png

    关于我:一个网络安全爱好者,致力于分享原创高质量干货,欢迎关注我的个人微信公众号:Bypass--,浏览更多精彩文章。

    b6d2fa6714dcaf7bbbfef74a37f4430f.png

    参考链接:

    Websphere上如何部署war包

    https://jingyan.baidu.com/article/363872ec2ae70b6e4ba16f83.html

    WebSphere 安装部署,发布web应用

    https://blog.csdn.net/greensure/article/details/78587939

    https://blog.csdn.net/smile_shaco/article/details/74909915

    展开全文
  • WebSphere Application Server部署war包项目

    千次阅读 2021-02-24 09:07:47
    一、前言 1.编写目的 本文是描述数据补录平台的安装及部署步骤。按照此文档提供的内容进行操作,能够顺利的完成数据补录平台的安装部署。...2 Websphere application sercer Websphere Application Serve
  • Java中使用的路径,分为两种:绝对路径和相对路径。归根结底,Java本质上只能使用绝对路径来寻找资源。所有的相对路径寻找资源的方法,都不过是一些便利方法。不过是API在底层帮助我们构建了绝对路径,从而找到资源...
  • Jenkins WebSphere 部署

    千次阅读 2019-05-31 10:16:06
    Jenkins 安装 1.1安装方式: 选择windows 安装文件或以war包形式运行 ... 选择最新版本的window版 ...Jenkins WebSphere插件安装 ...在可选插件列表中搜索WebSphere Deployer Plugin 安装 2.2配置:...
  • WebSphere部署应用教程

    2017-04-27 11:09:00
    WebSphere中应用是部署在“应用程序服务器”,而“应用程序服务器”建立在“节点”上 所以部署应用的几个前提是:要创立好受控server(亦即节点)并加入到控制台中且处于启动(亦即同步)状态;要基于节点创立好...
  • WebSphere部署Spring Boot

    2017-11-02 11:00:00
    WebSphere Application Server Network Deployment部署 Websphere版本: 8.5.5.12. 这里只简单做操作步骤介绍, 详细的信息请查看IBM的帮助文档 在页面上使用CTRL+F来找到要操作的地方. 1 代码和war包改动 你需要在...
  • IBM Websphere安装配置与项目部署

    万次阅读 2017-07-10 10:41:22
    将web应用部署websphere 1. 将应用打成war包 下一步(NEXT) 选择war包导出的路径,点击finish完成导出操作。 2. 进入websphere的控制台 3. 选择项目war文件,例如这里我的项目...
  • Websphere项目部署发布安装Websphere7.0选择安装应用服务器就好(安装步骤略)。打上7.0补丁(64位系统不用打补丁)。启动Websphere7.0访问控制台:输入用户/密码:admin/ jyfk 登录成功设置连接池JDBC驱动程序设置...
  • 1.WebSphere安装 1. 安装环境: 操作系统: redhat-release-5Server-5.4.0.3 WebSphere版本: WebSphere6.1 安装包名称: was.cd.6100....将was.cd.6100.linux.ia32.tar拷贝至应用服务器某一路径下. 如: /websphere/ wa...
  • #Dubbo框架和Websphere部署若干问题及解决办法 前言:Rest协议(等同于dubbo协议的语义,而http、grizzly、mina、netty是技术范畴的协议)是支持http协议和netty协议的(通过RestServerFactory生成),而http协议...
  • jenkins+websphere自动化部署war包

    千次阅读 2020-01-10 10:15:47
    构建环境-勾选Delete workspace before build starts Pre Steps执行shell脚本 \cp -rf 路径 路径 //如有必要,使用此命令替换源码文件 build Jenkins 构建部署容器was-job2 【快捷方式:复制已存在的类似job】 1....
  • WebSphere 安装部署,发布web应用

    万次阅读 2017-11-20 23:51:08
    目录 一、WebSphere 是什么? 二、安装 三、添加服务 四、部署&发布应用 ...WebSphere 是 IBM 的应用程序和集成软件平台,包含所有必要的中间件基础架构(包括服务器、服务和工具),这些基础架构是创建、部署
  • websphere作为IBM的稳定的产品线,WebSphere Application Server 是所有产品的基础,其他所有产品都在它之上运行。这里记录一下公司里用到的was应用部署(集群部署)在控制台的操作步骤:序号操作内容1部署WAS应用打开...
  • 关于 WebSphere 的应用部署

    千次阅读 2011-11-18 17:54:58
    1:通过ssh查看websphere的服务状态   登陆ssh : ssh 192.168.1.240 –l root (ENTER) 输入密码!  cd opt/IBM/WebSphere/AppServer/bin (注:可以使用 ./serverStatus.sh -all -user 第一步重大登录名 -...
  • 在IBM®WebSphere®Message Broker V6.0.2之前,没有支持使用命令行工具在broker.xml文件中修改可配置属性的方法。 开发人员通常通过使用WebSphere Message Broker工具箱中的Broker Archive Editor或通过手动解压缩...
  • websphere中获取项目文件路径

    千次阅读 2011-10-25 16:41:26
    网上各处搜索的资源,我知道有两种方法: 1。通过request方式 request.getSession().getServletContext().getRealPath("/");   2。通过spring包 01 import org.springframework.core.io....import
  • Websphere自动化部署维护脚本使用

    千次阅读 2020-03-03 08:52:53
    Websphere支持使用wsadmin命令行方式自动进行部署及维护操作,可以简化操作步骤,减少人工处理,提高效率,降低出错的可能。 以下提供了Websphere执行wsadmin命令行的方法,并提供了Websphere应用部署与维护的自动...
  • 2.选择要要部署的文件...选择服务器上的文件部署路径如图所示,直接写服务器上的路径就行 3.选择快速路径,下一步有4步 选择详细的话下一步有8步 4.1 默认 4.2 选择服务器,点击应用 全选程序包 4.3 全选程序包...
  • IBM WebSphere Application Server 9.0.0.2 部署Spring Boot2.x 项目目录1:创建JDBC 提供程序2:创建数据源3:创建数据源认证信息(JAAS - J2C)4:认证数据源5:Spring Boot 项目配置 目录 上一篇博客讲了...
  • 6.步骤 2: 输入数据库类路径信息 。 输入正确的jdbc驱动程序路径,点击下一步 7.最终确认所有配置是否正确, 点击完成 8.新建成功, 点击保存 3.数据源 数据源用于提供关系数据库连接的资源, 配置如下:...
  • websphere部署ear包

    千次阅读 2013-10-13 19:29:17
    继前面提到websphere中配置数据源后,下面说说程序改如何更改并且连接数据源。同时程序在websphere部署又该注意些什么。
  • 本文主要介绍了SuperMap iServer 7C(2015) war包在Linux上的WebSphere 部署方法,以及WebSphere 8的安装步骤。
  • Java 在websphere Linux下获取项目路径

    千次阅读 2018-03-20 15:12:05
    下载文件时想获取到项目的路径,读取...(可能跟服务器及部署方式不同获取方式不一样)这种方式在tomcat下和在wars上获得的路径是不一样的String path=getClass().getProtectionDomain().getCodeSource().getLocat...
  • 一:如果容器为Websphere,那下面为红色的地方不能加"/",如果为tomcat,则加上"/", String path = this.class.getResource("").getPath()+"config.properties"; ...
  • 过程:WebSphere管理平台更新整个war包是更新完成,启动报错,卸载重新部署war包也不行,去集群每个节点发布路径中查看发布的包,发现war包发布不全,经排查是先前同事单独替换文件的时候路径填写错误,war包里发布...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,259
精华内容 4,103
关键字:

websphere部署路径