210702:Linux啟動tomcat報(bào)錯-指定tomcat運(yùn)行時(shí)jdk版本-Oracle中字符串截取方法

一. Linux下啟動Tomcat拋異常

Java應(yīng)用部署到tomcat上后单默,啟動時(shí)運(yùn)行正常,但在運(yùn)行過程中熙侍,是不是拋出如下異常:

嚴(yán)重: Error, processing connection
    java.lang.IndexOutOfBoundsException
    at java.io.BufferedInputStream.read(BufferedInputStream.java:310)
    at org.apache.jk.common.ChannelSocket.read(ChannelSocket.java:620)
    at org.apache.jk.common.ChannelSocket.receive(ChannelSocket.java:577)
    at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:685)
    at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:889)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
    at java.lang.Thread.run(Thread.java:662)

通過日志錯誤信息吁朦,可以判定不是程序問題撕氧。而可能是有一些不是AJP協(xié)議的請求,請求了這個端口喇完。

1. 解決辦法一:

用端口掃描工具(優(yōu)化大師,防火墻剥啤,ewido等都可以)掃描系統(tǒng)網(wǎng)絡(luò)連接狀態(tài)锦溪,查看了一下是否有訪問8009端口的程序。關(guān)閉對應(yīng)的程序就OK了府怯。

2. 解決辦法二:

把tomcat配置文件service.xml中的相關(guān)內(nèi)容注解掉刻诊。

<!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/> -->

結(jié)果這個錯誤就不會出現(xiàn)了。

二. 指定tomcat運(yùn)行時(shí)JDK版本

tomcat作為日常開發(fā)的web應(yīng)用服務(wù)器牺丙,給開發(fā)測試帶來了很多便利则涯,tomcat的運(yùn)行依賴JDK的支持,在安裝JDK時(shí)經(jīng)常會配置環(huán)境變量:JAVA_HOME冲簿、CLASSPAT粟判,且需要添加path變量。把應(yīng)用部署到tomcat下時(shí)大多數(shù)不需要修改運(yùn)行環(huán)境峦剔,但是有時(shí)候需要修改JDK的版本档礁,從可以修改tomcat運(yùn)行時(shí)的JDK版本,我們可以知道使用tomcat時(shí)不時(shí)必須要配置JDK環(huán)境變量吝沫,因?yàn)槲覀兛梢酝ㄟ^修改tomcat的文件呻澜,指定tomcat運(yùn)行時(shí)的JDK版本。

下面說明如何修改tomcat運(yùn)行時(shí)JDK版本

1. windows

  1. 解壓下載的tomcat;

  2. 找到bin下的catalina.bat文件惨险;在文件的開始出添加如下代碼:

    set JAVA_HOME=D:\Program Files\Java\jdk7\jdk1.7.0_51
    set JRE_HOME=D:\Program Files\Java\jdk7\jre7
    

上面的意思是設(shè)定JAVA_HOME和JRE_HOME的路徑羹幸;

通過這里我們可以看出可以不設(shè)置JDK的環(huán)境變量;

2. linux

在bin下找到setclasspath.sh和catalina.sh辫愉,在文件的最開始加入如下代碼:

export JAVA_HOME=/home/jdk/Java/jdk7/jdk1.7.0_51
export JRE_HOME=/home/jdk/Java/jdk7/jre7

修改了setclasspath文件之后栅受,tomcat在啟動時(shí)便使用設(shè)定的JDK。

但是為什么這樣設(shè)置之后就可以呢?

我們都知道啟動tomcat可以通過運(yùn)行bin下的startup.bat窘疮,startup.bat會調(diào)用catalina.bat文件袋哼,而catalina.bat會調(diào)用setclasspath.bat文件來獲取JAVA_HOME和JRE_HOME這兩個環(huán)境變量的值,因此若要在tomcat啟動時(shí)指向特定的JDK闸衫,則需在setclasspath.bat文件的開頭處加上JAVA_HOME和JRE_HOME涛贯。

三. Oracle中字符串截取方法

substr 函數(shù):截取字符串

語法:SUBSTR(string,start蔚出, [length])

string:表示源字符串弟翘,即要截取的字符串。

start:開始位置骄酗,從1開始查找稀余。如果start是負(fù)數(shù),則從string字符串末尾開始算起趋翻。

length:可選項(xiàng)睛琳,表示截取字符串長度。

示例

SELECT SUBSTR('Hello SQL!', 1) FROM dual     --截取所有字符串踏烙,返回'Hello SQL!'
SELECT SUBSTR('Hello SQL!', 2) FROM dual     --從第2個字符開始师骗,截取到末尾。返回'ello SQL!'
SELECT SUBSTR('Hello SQL!', -4) FROM dual    --從倒數(shù)第4個字符開始讨惩,截取到末尾辟癌。返回'SQL!'
SELECT SUBSTR('Hello SQL!', 3, 6) FROM dual  --從第3個字符開始,截取6個字符荐捻。返回'llo SQ'
SELECT SUBSTR('Hello SQL!', -4, 3) FROM dual --從倒數(shù)第4個字符開始黍少,截取3個字符。返回'SQL'

instr 函數(shù)

返回字符串在源字符串中的位置

語法:INSTR(string处面,child_string厂置,[start],[show_time])

string:表示源字符串鸳君。

child_string:子字符串农渊,即要查找的字符串。

start:可選項(xiàng)或颊,開始位置砸紊,默認(rèn)從1開始。如果為負(fù)數(shù)囱挑,則從右向左檢索醉顽。

show_time:可選項(xiàng),表示子字符串第幾次出現(xiàn)在源字符串當(dāng)中平挑,默認(rèn)第1次游添,負(fù)數(shù)則報(bào)錯系草。

示例

--表示從源字符串'city_company_staff'中第1個字符開始查找子字符串'_'第1次出現(xiàn)的位置
SELECT INSTR('city_company_staff', '_') FROM dual    --返回5

--表示從源字符串'city_company_staff'中第5個字符開始查找子字符串'_'第1次出現(xiàn)的位置
SELECT INSTR('city_company_staff', '_', 5) FROM dual    --返回5

--表示從源字符串'city_company_staff'中第5個字符開始查找子字符串'_'第1次出現(xiàn)的位置
SELECT INSTR('city_company_staff', '_', 5, 1) FROM dual    --返回5

--表示從源字符串'city_company_staff'中第3個字符開始查找子字符串'_'第2次出現(xiàn)的位置
SELECT INSTR('city_company_staff', '_', 3, 2) FROM dual    --返回13

--start參數(shù)為-1,從右向左檢索唆涝,查找'_'字符串在源字符串中第1次出現(xiàn)的位置
SELECT INSTR('city_company_staff', '_', -1, 1) FROM dual    --返回13

--start參數(shù)為-6找都,從右向左檢索,查找'_'字符串在源字符串中第2次出現(xiàn)的位置
SELECT INSTR('city_company_staff', '_', -6, 2) FROM dual    --返回5

substr函數(shù)與instr函數(shù)截取

現(xiàn)有需求:數(shù)據(jù)查詢處理需要對code進(jìn)行"拆分"

code命名規(guī)則類似:城市所屬公司員工職位_員工姓名

其中廊酣,城市能耻、公司、職位亡驰、姓民字符串長度不固定晓猛,由于字符串長度不固定,只使用substr函數(shù)無法實(shí)現(xiàn)需求凡辱,需配合instr函數(shù)定位到字符'_'的位置戒职,然后使用substr函數(shù)進(jìn)行截取。詳細(xì)見下面例子透乾。

表數(shù)據(jù)如下:

SOURCE_CODE
BJ_BAIDU_CEO_LY
SH_BOKE_MANAGER_LWX
HRB_WM_CASHIER_OYZY

獲取城市

SELECT
    SUBSTR (SOURCE_CODE, 1, INSTR (SOURCE_CODE, '_', 1, 1) - 1) AS CITY
FROM
    TABLE_CODE_TEST

結(jié)果

解釋:此處截取源字符串SOURCE_CODE洪燥,從第1個字符開始,由于代表城市的code長度不固定乳乌,我們無法確定截取幾個字符蚓曼,所以使用instr函數(shù)判斷第一個'_'字符的位置,進(jìn)而確定每個SOURCE_CODE截取幾個字符串钦扭。

那為什么減1呢

是因?yàn)?strong>INSTR (SOURCE_CODE, '_', 1, 1)獲取的是源字符串中'_'字符第一次出現(xiàn)的位置床绪,再減1就得出了CITY字符個數(shù)客情。

獲取公司:

SELECT
    SUBSTR (
        SOURCE_CODE, 
        INSTR (SOURCE_CODE, '_', 1, 1) + 1, 
        INSTR (SOURCE_CODE, '_', 1, 2) - INSTR (SOURCE_CODE, '_', 1, 1)-1
    ) AS COMPANY
FROM
    TABLE_CODE_TEST

結(jié)果:

解釋:截取源字符串,從(第一個''出現(xiàn)位置+1)開始癞己,截取個數(shù)為:第2個''出現(xiàn)位置減去第1個''出現(xiàn)位置膀斋,此時(shí)還多了一個下劃線'',再減去1即可得到代表公司字符串痹雅。

獲取姓名:

SELECT
    SUBSTR (SOURCE_CODE, INSTR (SOURCE_CODE, '_', 1, 3) + 1) AS STF_NAME
FROM
    TABLE_CODE_TEST

結(jié)果:

解釋:截取源字符串仰担,從('_'第3次出現(xiàn)位置+1)開始截取,截取到末尾绩社。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末摔蓝,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子愉耙,更是在濱河造成了極大的恐慌贮尉,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件朴沿,死亡現(xiàn)場離奇詭異猜谚,居然都是意外死亡败砂,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門魏铅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來昌犹,“玉大人,你說我怎么就攤上這事览芳⌒崩眩” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵路操,是天一觀的道長疾渴。 經(jīng)常有香客問我,道長屯仗,這世上最難降的妖魔是什么搞坝? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮魁袜,結(jié)果婚禮上桩撮,老公的妹妹穿的比我還像新娘。我一直安慰自己峰弹,他們只是感情好店量,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著鞠呈,像睡著了一般融师。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蚁吝,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天旱爆,我揣著相機(jī)與錄音,去河邊找鬼窘茁。 笑死怀伦,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的山林。 我是一名探鬼主播房待,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼驼抹!你這毒婦竟也來了桑孩?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤框冀,失蹤者是張志新(化名)和其女友劉穎洼怔,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體左驾,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡镣隶,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年极谊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片安岂。...
    茶點(diǎn)故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡轻猖,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出域那,到底是詐尸還是另有隱情咙边,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布次员,位于F島的核電站败许,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏淑蔚。R本人自食惡果不足惜市殷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望刹衫。 院中可真熱鬧醋寝,春花似錦、人聲如沸带迟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽仓犬。三九已至嗅绰,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間搀继,已是汗流浹背办陷。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留律歼,地道東北人。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓啡专,卻偏偏與公主長得像险毁,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子们童,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容