weblogic小結

下面內容都來之網絡,在WebLogic11下可用,爲了方便今後的工作進行簡單的總結。

 

1.        在產品模式下不用輸入用戶名密碼自動啓動

修改文件:startWebLogic.sh,增加下面紅色字體部分:

SAVE_CLASSPATH=""

trap 'stopAll' 1 2 3 15

WLS_USER=”weblogic”

WLS_PW=”weblogic123”

if [ "${PRODUCTION_MODE}" = "true" ] ; then

         WLS_DISPLAY_MODE="Production"

else

         WLS_DISPLAY_MODE="Development"

fi

if [ "${WLS_USER}" != "" ] ; then

         JAVA_OPTIONS="${JAVA_OPTIONS} -Dweblogic.management.username=${WLS_USER}"

fi

if [ "${WLS_PW}" != "" ] ; then

         JAVA_OPTIONS="${JAVA_OPTIONS} -Dweblogic.management.password=${WLS_PW}"

fi

2.        控制檯中文輸出亂碼問題

修改文件:startWebLogic.sh,增加下面紅色字體部分

         if [ "${WLS_REDIRECT_LOG}" = "" ] ; then

        echo "Starting WLS with line:"

        echo "${JAVA_HOME}/bin/java ${JAVA_VM} ${MEM_ARGS} -Dweblogic.Name=${SERVER_NAME} -Djava.security.policy=${WL_HOME}/server/l

ib/weblogic.policy ${JAVA_OPTIONS} ${PROXY_SETTINGS} ${SERVER_CLASS}"

        ${JAVA_HOME}/bin/java ${JAVA_VM} ${MEM_ARGS} -Dweblogic.Name=${SERVER_NAME} -Dfile.encoding=GBK -Djava.security.policy=${WL_

HOME}/server/lib/weblogic.policy ${JAVA_OPTIONS} ${PROXY_SETTINGS} ${SERVER_CLASS}

else

        echo "Redirecting output from WLS window to ${WLS_REDIRECT_LOG}"

        ${JAVA_HOME}/bin/java ${JAVA_VM} ${MEM_ARGS} -Dweblogic.Name=${SERVER_NAME} -Dfile.encoding=GBK -Djava.security.policy=${WL_

HOME}/server/lib/weblogic.policy ${JAVA_OPTIONS} ${PROXY_SETTINGS} ${SERVER_CLASS}  >"${WLS_REDIRECT_LOG}" 2>&1

fi

3.        修改啓動時內存大小

修改文件:setDomainEnv.sh

         修改前:

         if [ "${JAVA_VENDOR}" = "Sun" ] ; then

        WLS_MEM_ARGS_64BIT="-Xms256m -Xmx512m"

        export WLS_MEM_ARGS_64BIT

        WLS_MEM_ARGS_32BIT="-Xms256m –Xmx512m"

        export WLS_MEM_ARGS_32BIT

else

        WLS_MEM_ARGS_64BIT="-Xms512m -Xmx512m"

        export WLS_MEM_ARGS_64BIT

        WLS_MEM_ARGS_32BIT="-Xms512m -Xmx512m"

        export WLS_MEM_ARGS_32BIT

fi

         修改後:

         if [ "${JAVA_VENDOR}" = "Sun" ] ; then

        WLS_MEM_ARGS_64BIT="-Xms256m -Xmx512m"

        export WLS_MEM_ARGS_64BIT

        WLS_MEM_ARGS_32BIT="-Xms512m –Xmx512m"

        export WLS_MEM_ARGS_32BIT

else

        WLS_MEM_ARGS_64BIT="-Xms512m -Xmx512m"

        export WLS_MEM_ARGS_64BIT

        WLS_MEM_ARGS_32BIT="-Xms512m -Xmx512m"

        export WLS_MEM_ARGS_32BIT

fi

4.        編寫重啓weblogic的腳本()

功能說明:重啓時停止服務,自動備份輸出日誌到logs目錄下,啓動服務

新建文件: restart.sh

內容:

sh ./bin/stopWebLogic.sh

         mv systemLog.log ./logs/ systemLog.log.`date '+%Y%m%d%H%M'`

nohup ./startWebLogic.sh > systemLog.log &

tail -f systemLog.log

修改文件的執行權限:chmod +x restart.sh

5.        Weblogic報出java.lang.OutOfMemoryError: PermGen space異常。

問題原因:Because the Classloader (and the Class objects it loaded) cannot be recycled. They are stored in the permanent heap generation by the JVM, and when you redepoy a new class loader is created, which loads another copy of all these classes. This can cause OufOfMemoryErrors eventually. 由於SUN JVM對permanent heap generation 區域的內容不做垃圾回收造成應用動態Load class文件過多引起的OutOfMemory錯誤。頻繁deploy會導致weblogic報permGen 錯誤。

修改文件:setDomainEnv.sh

解決方案:(修改-XX:MaxPermSize由原來的128M調整爲256M或512M)

MEM_PERM_SIZE="-XX:PermSize=48m"

export MEM_PERM_SIZE

MEM_MAX_PERM_SIZE="-XX:MaxPermSize=512m"

export MEM_MAX_PERM_SIZE

6.        weblogic 部署出現too many file opens

問題原因: linux系統對用戶打開太多文件的數量有限制,可以通過ulimit –a 查看到open files                      (-n) 1024。

修改文件:/etc/security/limits.conf,commEnv.sh(weblogic的公用環境設置文件)

修改內容:將文件中打開文件數限制從原來的1024調整爲更大。

文件中增加下面內容:(user1 爲對應的系統用戶名)

#<domain>      <type>  <item>         <value>

#

#*               soft    core            0

#*               hard    rss             10000

#@student        hard    nproc           20

#@faculty        soft    nproc           20

#@faculty        hard    nproc           50

#ftp             hard    nproc           0

#@student        -       maxlogins       4

User1 hard nofile 65535

User1 soft nofile 65535

commEnv.sh文件的修改:(下面這段腳本沒太看懂,在上面的方案還不好使得情況下使用下面的修改)

# limit the number of open file descriptors

resetFd() {

  if [ ! -n "`uname -s |grep -i cygwin || uname -s |grep -i windows_nt || /

              uname -s |grep -i HP-UX`" ]

  then

    maxfiles=`ulimit -H -n`

    if [ "$?" = "0" -a  `expr ${maxfiles} : '[0-9][0-9]*$'` -eq 0 ]; then

        ulimit -n 65535

    fi

  fi

}

7.Weblogic部署Hibernate3出現ClassNotFoundException: org.hibernate.hql.ast.HqlToken的問題。

問題原因:WebLogic已經集成了antlr包 ,在使用Hibernate時,會先加載其本身所帶的antlr包, 所以會和Hibernate 捆綁的antlr包衝突。可以通過修改hibernate的hibernate.query.factory_class參數爲org.hibernate.hql.classic.ClassicQueryTranslatorFactory,但是這樣會導致部分複雜的sql服務在hibernate下使用。下面介紹不調整這個參數的兩種解決方案。

解決方案:(下面的解決方案不一定起作用,具體問題具體分析)

①:修改應用的weblogic.xml文件:增加下面問容,讓系統啓動優先加載應用中使用的lib包。

<container-descriptor>

            <servlet-reload-check-secs>-1</servlet-reload-check-secs>

            <session-monitoring-enabled>true</session-monitoring-enabled>

            <prefer-web-inf-classes>true</prefer-web-inf-classes>

   </container-descriptor>

②:上傳antlr-2.7.6.jar到${DOMAIN_HOME}/lib/,修改domain的setDomainEnv.sh文件

JAVA_PROPERTIES="${JAVA_PROPERTIES} ${CLUSTER_PROPERTIES}"

export JAVA_PROPERTIES

# Clear the pre_classpath here in case an application template wants to set it before the larger pre_classpath is invoked below

PRE_CLASSPATH="${DOMAIN_HOME}/lib/antlr-2.7.6.jar:"

export PRE_CLASSPATH

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章