转自: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