轉自:http://wenku.baidu.com/link?url=lRRp2-pF2CHoSxff7ynqDKWpk9aJ7sHoOWm78_74_mSOiqC-qJMn3kAlJRqv2WnYSktzjpQF951Hf0k7kwwZMwAewKglR0sggYsLZOCdBHGhtml
myeclipse+weblogic10的配置,配置成功
運行中可能失敗,因爲weblogic10不穩定,重啓機器後可使用了
web工程使用到hibernate3時可能出現問題
ClassNotFoundException: org.hibernate.hql.ast.HqlToken
參考http://blog.chinajavaworld.com/entry.jspa?id=829
把本地的antlr.jar包考到weblogic.jar所在目錄,在myeclipse配置服務器的path選項中添加這個antlr.jar包後運行OK
下面轉載了可能出現的其餘問題和解決方法:
1.其中發現jmesa處理時找不到配置文件,對應下面的問題6,我是改用archive方式發佈後就OK了
2.CXF在WebLogic10.3上的部署出現問題:org.apache.cxf.js.rhino.DOMPayloadProvider" failed to preload
解決方法是web.xml文件的頭改成<web-app xmlns="http://java.sun.com/xml/ns/j2ee">
3.有<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>沒法處理,該工程中用到的jstl.jar包來自MyEclipse,找一個放到本工程的lib庫下,可解決
4.避免在lib庫中出現重複包
5.Hibernate-Validate-4.0.jar的不支持,用到該包,要用之前的Hibernate-Validate.jar包
OS:Windows XP
WebApp Server:Tomat5.5 WebLogic server 10 (中文版)
IDE:Bea workshop for weblogic platform。 java
一.IDE注意事項
建立動態web項目,選擇是否共享j2ee庫,若是共享,則須要域的共享庫裏面包含項目所需的庫,好比beeHive netUi;
不共享,則將所需的庫拷貝到WEB-INF/lib目錄,並自動建立相關配置文件於WEB-INF下
若是訪問頁面時出現以下錯誤:
index.jsp:2:4: 使用該 URI 沒法找到標記庫。多是由於 URI 不正確或解析 .tld 文件時出錯。
<%@taglib uri="http://beehive.apache.org/netui/tags-html-1.0" prefix="netui"%>
請刪除多餘的配置文件,或者從新創建一個工程,在嚮導第二頁選擇好正確的配置。
二.WebLogic基礎知識
一個域能夠包括多個服務器,應用程序依賴於某個服務器,經過部署-〉某應用程序-〉目標 來配置
wl_server是weblogic默認域,經過開始菜單-〉Bea products->tools->Weblogic Server來啓動
要建立本身的域,則能夠經過開始菜單-〉Bea products->tools->Configuration wizard來建立
登陸地址:http://localhost:7001/console/login/LoginForm.jsp
登陸用戶密碼:weblogic/weblogic
1.部署war以後,測試時發生錯誤:
Error 503--Service Unavailable
From RFC 2068 Hypertext Transfer Protocol -- HTTP/1.1:
.....
解決辦法:通常是在剛剛激活更改後,就進行測試,還須要將該應用程序啓動,狀態爲「活動」以後再測試就能夠了。
2.鏈接池測試時出錯:
Warning! Connectivity to backend database not verified. This is either because required connection pool attribute "TestConnectionsOnReserve" has not been enabled, or an invalid value has been specified for attribute "TestTableName". Please check the server log for more details..
配置鏈接緩衝池,在「高級」中選中「保留時測試鏈接」便可。此時須要先激活更改再進行測試。不然還會報錯。
3.jdbc jndi錯誤:
javax.naming.NameNotFoundException: Unable to resolve 'jdbc_fbysss. Resolved ''; remaining name 'jdbc_fbysss'
首先要在控制檯中點擊左邊的控制欄中的服務->JDBC新建一個數據源,數據源名稱無所謂,jndi name必定要注意,好比取名叫jdbc_fbysss,並且,jdbc源必須依賴於一個server。不然沒法啓動。
對於Spring項目,修改applicationContext.xml的dataSource,(Tomcat的鏈接池在這裏就不須要了)。
<!-- 數據源緩衝池 --> <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="jdbc_fbysss"/><!--二者要同樣-->
<property name="resourceRef">
<value>false</value>
</property>
</bean>
4.xml校驗錯誤
(1)hbm.xml
org.dom4j.DocumentException: unknown protocol: platform. Nested exception: unknown protocol: platform
這個經檢查是workshop導出時 ,hbm.xml文件生成錯誤。修改過來就行了
(2)struts-config.xml
正式部署時出現異常:
ERROR Digester []: Parse Error at line 2 column
15: Document root element "struts-config", must match DOCTYPE root "null".
org.xml.sax.SAXParseException: Document root element "struts-config", must match
DOCTYPE root "null".
須要在struts-config.xml中第二行加入<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">
5.ServletApi實現不一致狀況
發現一個奇怪的現象,tomcat中,一個servlet的子類,若是沒有聲明init方法,會自動執行父類的init方法,而weblogic不會。
解決辦法是顯式聲明init,super.init();
6.莫名其妙空指針錯誤
完整錯誤信息:
java.io.FileNotFoundException: F:\bea\wlserver_10.0\samples\domains\workshop\servers\cgServer\tmp\_WL_user\prj_fbysss\mlh5uz\war (拒絕訪問。)
at java.io.FileInputStream.open(Ljava.lang.String;)V(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:106)
at workshop.util.filesystem.file.WlFileSystem.getInputStream(WlFileSyste
m.java:148)
at workshop.util.filesystem.FS.getInputStream(FS.java:262)
at javelin.jsp.JspParser.readStaticInclude(JspParser.java:3261)
at javelin.jsp.JspParser.parseStaticInclude(JspParser.java:3198)
at javelin.jsp.JspParser.processImplicitIncludes(JspParser.java:3289)
at javelin.jsp.JspParser.jspParse(JspParser.java:703)
at javelin.jsp.JspParser._parse(JspParser.java:504)
at javelin.jsp.JspParser.parse(JspParser.java:497)
at javelin.jsp.JspAnalyzer.parseFile(JspAnalyzer.java:113)
at javelin.jsp.JspAnalyzer.parse(JspAnalyzer.java:101)
at javelin.ProxySourceFile.parse(ProxySourceFile.java:117)
at javelin.SourceFile.getAst(SourceFile.java:542)
at javelin.SourceFile.getAst(SourceFile.java:516)
at javelin.ProxySourceFile.codeGen(ProxySourceFile.java:215)
at javelin.SourceFile.codeGen(SourceFile.java:310)
at javelin.client.ClientUtilsImpl$CodeGenJob.run(ClientUtilsImpl.java:11
05)
at javelin.client.Job.performJob(Job.java:81)
at javelin.client.ThreadPool$WorkerThread.run(ThreadPool.java:215)
<2008-8-23 下午07時15分11秒 CST> <Error> <HTTP> <BEA-101017> <[weblogic.servlet.
internal.WebAppServletContext@36b25e - appName: prj_fbysss, name: 'prj_fbysss', context-path: '/prj_fbysss] Root cause of ServletException.
java.lang.NullPointerException
at javelin.jsp.JspAnalyzer.parse(JspAnalyzer.java:104)
at javelin.ProxySourceFile.parse(ProxySourceFile.java:117)
at javelin.SourceFile.getAst(SourceFile.java:542)
at javelin.SourceFile.getAst(SourceFile.java:516)
at javelin.ProxySourceFile.codeGen(ProxySourceFile.java:215)
Truncated. see log file for complete stacktrace
>
最後發現是web.xml中<include-coda/>一句不對,去掉就行了,很怪異。
<taglib>
<taglib-uri>http://www.sss.com/select</taglib-uri>
<taglib-location>/WEB-INF/tlds/select.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://www.sss.com/tree</taglib-uri>
<taglib-location>/WEB-INF/tlds/tree.tld</taglib-location>
</taglib>
<!--web 項目配置-->
<jsp-property-group>
<description>
WEB項目配置
</description>
<display-name>JSPConfiguration</display-name>
<url-pattern>*.jsp</url-pattern>
<el-ignored>false</el-ignored>
<page-encoding>gbk</page-encoding>
<scripting-invalid>false</scripting-invalid>
<!--這句竟然引發webloic錯誤!!!! include-coda/-->
</jsp-property-group>
</jsp-config>
7.類衝突問題
(1)JSTL解析失敗
index.jsp:1:1: validator 類 "org.apache.taglibs.standard.tlv.JstlCoreTLV" 失敗,出現以下異常: "java.lang.ClassCastException: weblogic.xml.jaxp.RegistrySAXParserFactory"。
<%@page contentType="text/html;charset=gbk" language="java"%>
項目屬性-〉項目構面中的設置將記錄在.setting/org.eclipse.wst.common.project.facet.core.xml文件中。
最後是把prefer-web-inf-classes設置爲false就能夠了。
(2)HQL語句執行失敗
org.springframework.orm.hibernate3.HibernateQueryException: ClassNotFoundException: org.hibernate.hql.ast.HqlToken
這種狀況是包版本衝突,必須設置prefer-web-inf-classes設置爲true。
這樣一來,有的包須要true,有的須要false,怎麼辦?Weblogic的確夠噁心的。JSTL的包都已經放webapp下了,設置prefer-web-inf-classes設置爲ture還不行,只好採起如下稍顯麻煩的方法:
在workshop開發環境下,啓動的服務器目錄是
F:\bea\wlserver_10.0\samples\domains\workshop\bin
修改啓動腳本startWebLogic.cmd
找到set CLASSPATH=%SAVE_CLASSPATH%,在後面加入
@REM sss added
set PRE_CLASSPATH=%WL_HOME%\server\lib\antlr-2.7.6rc1.jar;
set CLASSPATH=%PRE_CLASSPATH%;%CLASSPATH%
其中,antlr-2.7.6rc1.jar包須要拷貝到F:\bea\wlserver_10.0\server\lib下。
正式發佈的時候,須要修改對應域目錄下的啓動腳本
好比f:\bea\user_projects\domains\fbysssDomain\bin\startWebLogic.cmd
8.部署問題
部署時出現以下錯誤:
<2008-8-23 下午07時37分42秒 CST> <Warning> <Deployer> <BEA-149124> <
Failures were detected while initiating redeploy task for application 'prj_fbysss'. Error is: '
[Deployer:149163]The domain edit lock is owned by another session in non-exclusi
ve mode - this deployment operation requires exclusive access to the edit lock a
nd hence cannot proceed.'>
解決:進入http://localhost:7001/console,釋放配置,再次部署便可。
注:更新war:必須在刪除該應用,並激活更改以後才能覆蓋。
可是用war方式,獲取資源路徑的方法和tomcat不一樣,存在臭名昭著的getRealPath等問題,移植困難,因此用目錄方式部署比較好。
具體方法:先把war解壓,而後在weblogic控制檯裏面選擇目錄部署。 web