1. 如何升级TOMCAT
从http://tomcat.apache.org/index.html 中下载适应的Tomcat版本
1) 解压至OA的tomcat同路径下,关闭OA服务,把老的Tomcat备份;
2) 将老Tomcat/conf/server.xml文件中的Context path="/oa"..…/Context复制到新Tomcat/conf/server.xml文件同位置下,例如:
Context path="/oa" docBase="../../firstframe/webapp" debug="0" reloadable="true" crossContext="true"
!-- oracle datasource
Resource name="jdbc/DefaultDS" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="20" maxWait="10000" initialSize="10" minIdle="10"
removeAbandoned="true" removeAbandonedTimeout="60" logAbandoned="true"
username="oadb" password="oapassword" driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@//127.0.0.1:1521/orcl"/
--
!-- mssql datasource --
Resource name="jdbc/DefaultDS" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="20" maxWait="10000" initialSize="10" minIdle="10"
removeAbandoned="true" removeAbandonedTimeout="60" logAbandoned="true"
username="oadb" password="oapassword" driverClassName="net.sourceforge.jtds.jdbc.Driver" url="jdbc:jtds:sqlserver://127.0.0.1:1433;DatabaseName=fangdichan_ff"/
/Context
3) 从老Tomcat/common/lib中复制ojdbc-14.jar和jtds-1.2.2.jar到新的Tomcat/common/lib下(如果新tomcat版本是6.0.18或以上,路径为Tomcat/lib)
启动OA服务
2. 公司要求把所有已经部署到服务器上的项目的tomcat从6升级到7,软件小白,求大神只到如何操作,非常感谢
恕俺也不懂linux下的应用管理
3. 如何在linux上安装tomcat
1.下载JDK与Tomcat.
2.jdk安装与配置.
(1)jdk安装
rpm包:
# rpm -ivh jdk-7u55-linux-x64.rpm
tar.gz包:解压缩
# mkdir /usr/java
# cd /usr/java
# tar -zxvf /software/jdk-7u55-linux-x64.tar.gz
生成链接以便版本升级
# ln -s jdk1.7.0_55 latest
# ln -s latest default
(2)配置环境变量
# vi /etc/profile
export JAVA_HOME=/usr/java/default
export JAVA_BIN=$JAVA_HOME/bin
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
使配置生效
# source /etc/profile
测试jdk.
# java -version
java version "1.7.0_55"
Java(TM) SE Runtime Environment (build 1.7.0_55-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.55-b03, mixed mode)
3.Tomcat的安装
解压缩
# mkdir /usr/local/tomcat
# cd /usr/local/tomcat
# tar -zxvf /software/apache-tomcat-7.0.54.tar.gz
生成链接以便版本升级
# ln -s apache-tomcat-7.0.54 server
启动Tomcat
# cd /usr/local/tomcat/server/bin
# ./startup.sh
Using CATALINA_BASE: /usr/local/tomcat/server
Using CATALINA_HOME: /usr/local/tomcat/server
Using CATALINA_TEMDIR: /usr/local/tomcat/server/temp
Using JRE_HOME: /usr/java/default
Using CLASS_PATH: /usr/local/tomcat/server/bin/bootstrap.jar:/usr/local/tomcat/server/bin/tomcat-juli.jar
Tomcat started.
测试Tomcat:
打开防火墙,使外部能访问
# /sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
# service iptables save
# service iptables restart
或直接修改文件/etc/sysconfig/iptables.
# vi /etc/sysconfig/iptables
-A INPUT -p tcp -m tcp --dport 8080 -j ACCEPT
# service iptables restart
在浏览器输入: http://192.168.16.133:8080
如在本机可以输入: http://localhost:8080
出现tomcat的页面表示安装成功.
停止Tomcat
# ./shutdown.sh
4.配置web管理帐号
修改文件conf/tomcat-users.xml,在<tomcat-users>元素中添加帐号密码,需要指定角色.
# vi /usr/local/tomcat/server/conf/tomcat-users.xml
<tomcat-users>
<user name="admin" password="admin" roles="admin-gui,manager-gui" />
</tomcat-users>
5.配置web访问端口
可以修改conf目录下的文件server.xml,修改Connector元素(Tomcat的默认端口是8080),需要重新启动Tomcat服务生效.
# vi /usr/local/tomcat/server/conf/server.xml
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
6.配置https安全连接(ssl加密连接)
https连接需要用到数字证书与数字签名(MD5算法)
网站https连接首先需要申请数字证书,配置加密连接器,浏览器安装证书.
·使用java的工具keytool产生数字证书
# keytool -genkey -alias tomcat -keyalg RSA
生成文件.keystore
注意:CN为主机名称,本机可用localhost
·将文件.keystore放到Tomcat服务器的conf目录下
# cp .keystore /usr/local/tomcat/server/conf/
·修改conf/server.xml文件,修改加密连接器,添加keystoreFile与keystorePass
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="conf/.keystore" keystorePass="123456"/>
·重新启动tomcat.浏览器输入https://localhost:8443访问,并安装证书.
7.Tomcat的目录结构
·bin //存放Tomcat的命令脚本文件
·conf //存放Tomcat服务器的各种配置文件,最主要是server.xml
·lib //存放Tomcat服务器支撑jar包
·logs //存放日志文件
·temp //存放临时文件
·webapps //web应用所在目录,外界访问web资源的存放目录
·work //Tomcat的工作目录
8.web应用的目录结构
webapp -- web应用所在目录
|--- html, jsp, css, js文件等 -- 这些文件一般在web应用根目录下,根目录下的文件外界可以直接访问.
|--- WEB-INF 目录 -- java类、jar包、web配置文件存在这个目录下,外界无法直接访问,由web服务器负责调用.
|--- classes 目录 -- java类
|--- lib 目录 -- java类运行所需要的jar包
|--- web.xml 文件 -- web应用的配置文件
9.虚拟主机的配置
指定虚拟主机名,修改conf/server.xml,添加<host>元素.
<host name="hostname.domainname" appBase="/webapps">
<Context path="/webapp" docBase="/webapps/webapp"/>
</host>
例:
<host name="www.163.com" appBase="/webapps">
</host>
<host name="mail.163.com" appBase="/mailapps">
</host>
须设置DNS解析(host文件或DNS系统).
10.web应用和虚拟目录的映射.
可以修改xml配置文件的<Context>元素来设置web应用和虚拟目录的映射.
·conf/server.xml //在<host>元素下添加<Context path="/webdir" docBase="/webappdir"/>,需要重新启动Tomcat服务生效,不建议使用.
·conf/context.xml //添加<Context>元素所有web应用有效.
·conf/[enginename]/[hostname]/context.xml.default //[enginename]一般是Catalina,主机[hostname]的所有web应用有效.
·conf/[enginename]/[hostname]/ //在目录下任意建一个文件(扩展名xml),文件名即为虚拟目录名.多级目录使用#分割. <Context docBase="/webappdir"/>
//缺省值web应用目录可以定义为ROOT.xml,添加<Context docBase="/webappdir"/>,需重新启动Tomcat服务器.
·META-INF/context.xml //
可以将web应用放在webapps目录下让Tomcat服务器自动映射,适用开发环境,实际运用环境中不用自动映射。
如没有修改配置文件,web应用目录为ROOT时则为默认web应用。
11.web应用首页(welcome file)的配置
修改web应用的配置文件: [webapp]/WEB-INF/web.xml
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
4. tomcat5.5 如何升级(update)成tomcat6
应该下载一个jstl包.就能用了.不需要升级到6吧.
jstl只是一个标签库.其实你用struts的话.他自己的标签就够了.
5. 如何简单实现安卓app自动更新功能
第一步 服务器端:
服务端提供一个借口,或者网址,我这里就用的服务器是tomcat,这里提供一个网址如下:
//也就是一个json数据接口
public static final String UPDATE_URL = "http://192.168.1.103:8080/update.json";
我们来看下json数据参数:
{
//app名字
appname: "爱新闻1.1",
//服务器版本号
serverVersion: "2",
//服务器标志
serverFlag: "1",
//是否强制更新
lastForce: "1",
//apk下载地址,这里我已经下载了官方的apk,放到了服务器里面
updateurl: "http://192.168.1.103:8080/36Kr.apk",
//版本的更新的描述
upgradeinfo: "V1.1版本更新,你想不想要试一下哈!!!"
}
第二步 客户端需要实现:
首先我们要去解析服务端给的json,那么我们就要来创建一个model类了(代码过多,这里只有字段,getter和setter方法自己创建):
//app名字
private String appname;
//服务器版本
private String serverVersion;
//服务器标志
private String serverFlag;
//强制升级
private String lastForce;
//app最新版本地址
private String updateurl;
//升级信息
private String upgradeinfo;
在这里使用了一个辅助类,基本和model字段差不多:
public class UpdateInformation {
public static String appname = MyApplication.getInstance()
.getResources().getString(R.string.app_name);
public static int localVersion = 1;// 本地版本
public static String versionName = ""; // 本地版本名
public static int serverVersion = 1;// 服务器版本
public static int serverFlag = 0;// 服务器标志
public static int lastForce = 0;// 之前强制升级版本
public static String updateurl = "";// 升级包获取地址
public static String upgradeinfo = "";// 升级信息
public static String downloadDir = "wuyinlei";// 下载目录
}
在进入app的时候,这个时候如果检测到服务器端有了新的版本,就回弹出提示框,提示我们更新。这个我们在MainActivity里面处理逻辑(onCreate()方法里面):
OkhttpManager.getAsync(Config.UPDATE_URL, new OkhttpManager.DataCallBack() {
@Override
public void requestFailure(Request request, Exception e) {
}
@Override
public void requestSuccess(String result) {
try {
Log.d("wuyiunlei",result);
JSONObject object = new JSONObject(result);
UpdateInfoModel model = new UpdateInfoModel();
model.setAppname(object.getString("appname"));
model.setLastForce(object.getString("lastForce"));
model.setServerFlag(object.getString("serverFlag"));
model.setServerVersion(object.getString("serverVersion"));
model.setUpdateurl(object.getString("updateurl"));
model.setUpgradeinfo(object.getString("upgradeinfo"));
tmpMap.put(DeliverConsts.KEY_APP_UPDATE, model);
} catch (JSONException e) {
e.printStackTrace();
}
//发送广播
sendBroadcast(new Intent(UpdateReceiver.UPDATE_ACTION));
}
});
当然了,我们也要注册和结束广播:
/**
* 广播注册
*/
private void registerBroadcast() {
mUpdateReceiver = new UpdateReceiver(false);
mIntentFilter = new IntentFilter(UpdateReceiver.UPDATE_ACTION);
this.registerReceiver(mUpdateReceiver, mIntentFilter);
}
/**
* 广播卸载
*/
private void unRegisterBroadcast() {
try {
this.unregisterReceiver(mUpdateReceiver);
} catch (Exception e) {
e.printStackTrace();
}
}
接下来我们看下我们自定义的广播接收者UpdateReceiver .java:
public class UpdateReceiver extends BroadcastReceiver {
private AlertDialog.Builder mDialog;
public static final String UPDATE_ACTION = "wuyinlei_aixinwen";
private SharedPreferencesHelper mSharedPreferencesHelper;
private boolean isShowDialog;
public UpdateReceiver() {
}
public UpdateReceiver(boolean isShowDialog) {
super();
this.isShowDialog = isShowDialog;
}
@Override
public void onReceive(Context context, Intent intent) {
mSharedPreferencesHelper = mSharedPreferencesHelper
.getInstance(MyApplication.getInstance());
//当然了,这里也可以直接new处hashmap
HashMap tempMap = MyApplication.getInstance()
.getTempMap();
UpdateInfoModel model = (UpdateInfoModel) tempMap
//就是一个标志
.get(DeliverConsts.KEY_APP_UPDATE);
try {
/**
* 获取到当前的本地版本
*/
UpdateInformation.localVersion = MyApplication
.getInstance()
//包管理独享
.getPackageManager()
//包信息
.getPackageInfo(
MyApplication.getInstance()
.getPackageName(), 0).versionCode;
/**
* 获取到当前的版本名字
*/
UpdateInformation.versionName = MyApplication
.getInstance()
.getPackageManager()
.getPackageInfo(
MyApplication.getInstance()
.getPackageName(), 0).versionName;
} catch (Exception e) {
e.printStackTrace();
}
//app名字
UpdateInformation.appname = MyApplication.getInstance()
.getResources().getString(R.string.app_name);
//服务器版本
UpdateInformation.serverVersion = Integer.parseInt(model
.getServerVersion());
//服务器标志
UpdateInformation.serverFlag = Integer.parseInt(model.getServerFlag());
//强制升级
UpdateInformation.lastForce = Integer.parseInt(model.getLastForce());
//升级地址
UpdateInformation.updateurl = model.getUpdateurl();
//升级信息
UpdateInformation.upgradeinfo = model.getUpgradeinfo();
//检查版本
checkVersion(context);
}
/**
* 检查版本更新
*
* @param context
*/
public void checkVersion(Context context) {
if (UpdateInformation.localVersion < UpdateInformation.serverVersion) {
// 需要进行更新
mSharedPreferencesHelper.putIntValue(
//有新版本
SharedPreferencesTag.IS_HAVE_NEW_VERSION, 1);
//更新
update(context);
} else {
mSharedPreferencesHelper.putIntValue(
SharedPreferencesTag.IS_HAVE_NEW_VERSION, 0);
if (isShowDialog) {
//没有最新版本,不用升级
noNewVersion(context);
}
clearUpateFile(context);
}
}
/**
* 进行升级
*
* @param context
*/
private void update(Context context) {
if (UpdateInformation.serverFlag == 1) {
// 官方推荐升级
if (UpdateInformation.localVersion < UpdateInformation.lastForce) {
//强制升级
forceUpdate(context);
} else {
//正常升级
normalUpdate(context);
}
} else if (UpdateInformation.serverFlag == 2) {
// 官方强制升级
forceUpdate(context);
}
}
/**
* 没有新版本
* @param context
*/
private void noNewVersion(final Context context) {
mDialog = new AlertDialog.Builder(context);
mDialog.setTitle("版本更新");
mDialog.setMessage("当前为最新版本");
mDialog.setNegativeButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
}).create().show();
}
/**
* 强制升级 ,如果不点击确定升级,直接退出应用
*
* @param context
*/
private void forceUpdate(final Context context) {
mDialog = new AlertDialog.Builder(context);
mDialog.setTitle("版本更新");
mDialog.setMessage(UpdateInformation.upgradeinfo);
mDialog.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent mIntent = new Intent(context, UpdateService.class);
mIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mIntent.putExtra("appname", UpdateInformation.appname);
mIntent.putExtra("appurl", UpdateInformation.updateurl);
//启动服务
context.startService(mIntent);
}
}).setNegativeButton("退出", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 直接退出应用
//ManagerActivity.getInstance().finishActivity();
System.exit(0);
}
}).setCancelable(false).create().show();
}
/**
* 正常升级,用户可以选择是否取消升级
*
* @param context
*/
private void normalUpdate(final Context context) {
mDialog = new AlertDialog.Builder(context);
mDialog.setTitle("版本更新");
mDialog.setMessage(UpdateInformation.upgradeinfo);
mDialog.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent mIntent = new Intent(context, UpdateService.class);
mIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//传递数据
mIntent.putExtra("appname", UpdateInformation.appname);
mIntent.putExtra("appurl", UpdateInformation.updateurl);
context.startService(mIntent);
}
}).setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
}).create().show();
}
/**
* 清理升级文件
*
* @param context
*/
private void clearUpateFile(final Context context) {
File updateDir;
File updateFile;
if (Environment.MEDIA_MOUNTED.equals(Environment
.getExternalStorageState())) {
updateDir = new File(Environment.getExternalStorageDirectory(),
UpdateInformation.downloadDir);
} else {
updateDir = context.getFilesDir();
}
updateFile = new File(updateDir.getPath(), context.getResources()
.getString(R.string.app_name) + ".apk");
if (updateFile.exists()) {
Log.d("update", "升级包存在,删除升级包");
updateFile.delete();
} else {
Log.d("update", "升级包不存在,不用删除升级包");
}
}
}
6. 如何将 服务器中的 tomcat 升级
我们那的tomcat 直接 把你用的tomcat包比如 tomcat-6.0.23放到服务器上 解压,就可以了啊。不知道和你们那有啥区别,知道的可以详细说一下。
7. 如何升级 Apache Tomcat
最新版本是9.0
下载地址:
http://mirrors.tuna.tsinghua.e.cn/apache/tomcat/tomcat-9/v9.0.0.M10/bin/apache-tomcat-9.0.0.M10.zip