环境:weblogic9.1 ,Oracle 10g,Oracle客户端是Oracle 10.2.0
我在weblogic上配置了两个实例分别是7002和7003端口。然后7001端口的实例里配置了两个数据源,在7002端口实例里配置了两个数据源,结果运行了2个小时没有问题,但是两个小时后7002端口实例中的数据源就不能使用了。然后报javax.servlet.ServletException: no ocijdbc10 in java.library.path错误,
我的配置过程是这样的:
1.在Windows环境下,在系统环境变量中的path中增加D:\oracle\product\10.2.0\client_1\bin路径
2.删掉weblogic自带的oracle驱动 (例如c:\bea\weblogic92\server\ext\jdbc\oracle\10g 下的ojdbc14.jar包)
3.直接将驱动加到weblogic 的CLASSPATH中 (例如修改c:\bea\weblogic92\samples\domains\wl_server\bin\startWebLogic.cmd,set CLASSPATH=D:\Oracle\product\10.1.0\Client_1\jdbc\lib\ojdbc14.jar;CLASSPATH%;%MEDREC_WEBLOGIC_CLASSPATH%;
注:我7001端口实例和7002端口实例的startWeblogic中都配置了ClassPath.
最奇怪的是开始配置时都没有问题,只是在运行了一会后才出现错误,而且把已经出错的数据源放在7001端口实例中配置结果又没有任何问题了。我新建其它实例也是报相同的错误。错误信息:
**************************************************************************************************************
javax.servlet.ServletException: no ocijdbc10 in java.library.path at org.apache.beehive.netui.pageflow.internal.DefaultExceptionsHandler.handleException(DefaultExceptionsHandler.java:169) at org.apache.beehive.netui.pageflow.FlowController.handleException(FlowController.java:268) at org.apache.beehive.netui.pageflow.FlowController.internalExecute(FlowController.java:450) at org.apache.beehive.netui.pageflow.PageFlowController.internalExecute(PageFlowController.java:245) at org.apache.beehive.netui.pageflow.FlowController.execute(FlowController.java:316) at org.apache.beehive.netui.pageflow.internal.FlowControllerAction.execute(FlowControllerAction.java:48) at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484) at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.processActionPerform(PageFlowRequestProcessor.java:1948) at com.bea.console.internal.ConsolePageFlowRequestProcessor.processActionPerform(ConsolePageFlowRequestProcessor.java:188) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274) at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.processInternal(PageFlowRequestProcessor.java:590) at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.process(PageFlowRequestProcessor.java:840) at org.apache.beehive.netui.pageflow.AutoRegisterActionServlet.process(AutoRegisterActionServlet.java:607) at org.apache.beehive.netui.pageflow.PageFlowActionServlet.process(PageFlowActionServlet.java:135) at com.bea.console.internal.ConsoleActionServlet.process(ConsoleActionServlet.java:241) at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507) at com.bea.console.internal.ConsoleActionServlet.doGet(ConsoleActionServlet.java:130) at org.apache.beehive.netui.pageflow.PageFlowUtils.strutsLookup(PageFlowUtils.java:927) at com.bea.portlet.adapter.scopedcontent.ScopedContentCommonSupport.executeAction(ScopedContentCommonSupport.java:571) at com.bea.portlet.adapter.scopedcontent.ScopedContentCommonSupport.processActionInternal(ScopedContentCommonSupport.java:122) at com.bea.portlet.adapter.scopedcontent.PageFlowStubImpl.processAction(PageFlowStubImpl.java:98) at com.bea.netuix.servlets.controls.content.NetuiContent.raiseScopedAction(NetuiContent.java:149) at com.bea.netuix.servlets.controls.content.NetuiContent.raiseScopedAction(NetuiContent.java:108) at com.bea.netuix.servlets.controls.content.NetuiContent.handlePostbackData(NetuiContent.java:223) at com.bea.netuix.nf.ControlLifecycle$2.visit(ControlLifecycle.java:169) at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:290) at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:300) at com.bea.netuix.nf.ControlTreeWalker.walk(ControlTreeWalker.java:126) at com.bea.netuix.nf.ControlTreeWalker.walk(ControlTreeWalker.java:105) at com.bea.netuix.nf.Lifecycle.runInbound(Lifecycle.java:173) at com.bea.netuix.nf.Lifecycle.run(Lifecycle.java:137) at com.bea.netuix.servlets.manager.UIServlet.runLifecycle(UIServlet.java:327) at com.bea.netuix.servlets.manager.UIServlet.doPost(UIServlet.java:190) at com.bea.netuix.servlets.manager.UIServlet.service(UIServlet.java:144) at com.bea.netuix.servlets.manager.SingleFileServlet.service(SingleFileServlet.java:206) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at weblogic.servlet.AsyncInitServlet.service(AsyncInitServlet.java:124) at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:225) at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:127) at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:272) at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42) at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:26) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42) at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3151) at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121) at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:1973) at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:1880) at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1310) at weblogic.work.ExecuteThread.execute(ExecuteThread.java:207) at weblogic.work.ExecuteThread.run(ExecuteThread.java:179)  
 
  **************************************************************************************************************
StartWeblogic的内容
@ECHO OFF@REM WARNING: This file is created by the Configuration Wizard.
@REM Any changes to this script may be lost when adding extensions to this configuration.SETLOCAL@REM --- Start Functions ---GOTO :ENDFUNCTIONS:stopAll
@REM We separate the stop commands into a function so we are able to use the trap command in Unix (calling a function) to stop these services
if NOT "X%ALREADY_STOPPED%"=="X" (
GOTO :EOF
)
@REM STOP POINTBASE (only if we started it)
if "%POINTBASE_FLAG%"=="true" (
echo Stopping PointBase server...
call "%WL_HOME%\common\bin\stopPointBase.cmd" -port=%POINTBASE_PORT% -name=%POINTBASE_DBNAME%  >"%DOMAIN_HOME%\pointbaseShutdown.log" 2>&1  echo PointBase server stopped.
) set ALREADY_STOPPED=true
@REM Restore IP configuration the node manager starts IP Migration
if NOT "%SERVER_IP%"=="" (
call "%WL_HOME%\common\bin\wlsifconfig.cmd" -removeif "%IFNAME%" "%SERVER_IP%"
)
GOTO :EOF
:ENDFUNCTIONS
@REM Call setDomainEnv here.set DOMAIN_HOME=C:\bea\user_projects\domains\wsjcdatafetch
for %%i in ("%DOMAIN_HOME%") do set DOMAIN_HOME=%%~fsicall "%DOMAIN_HOME%\bin\setDomainEnv.cmd" %*set SAVE_JAVA_OPTIONS=%JAVA_OPTIONS%set SAVE_CLASSPATH=%CLASSPATH%@REM Start PointBaseset PB_DEBUG_LEVEL=0if "%POINTBASE_FLAG%"=="true" (
call "%WL_HOME%\common\bin\startPointBase.cmd" -port=%POINTBASE_PORT% -debug=%PB_DEBUG_LEVEL% -console=false -background=true -ini=%DOMAIN_HOME%\pointbase.ini  >"%DOMAIN_HOME%\pointbase.log" 2>&1 )set JAVA_OPTIONS=%SAVE_JAVA_OPTIONS%set SAVE_JAVA_OPTIONS=set CLASSPATH=E:\oracle\product\10.2.0\client_1\jdbc\lib\ojdbc14.jar;%SAVE_CLASSPATH%set SAVE_CLASSPATH=if "%PRODUCTION_MODE%"=="true" (
set WLS_DISPLAY_MODE=Production
) else (
set WLS_DISPLAY_MODE=Development
)if NOT "%WLS_USER%"=="" (
set JAVA_OPTIONS=%JAVA_OPTIONS% -Dweblogic.management.username=%WLS_USER%
)if NOT "%WLS_PW%"=="" (
set JAVA_OPTIONS=%JAVA_OPTIONS% -Dweblogic.management.password=%WLS_PW%
)set CLASSPATH=%CLASSPATH%;%MEDREC_WEBLOGIC_CLASSPATH%echo .

解决方案 »

  1.   


    没有玩过 weblogic但是从exception log来看
    出错的时候。这里是使用的oci的方式吧你确定一下你datasource的driver用的是thin方式的。
      

  2.   

    谢谢楼上的兄弟们,我是通过JNDI方式调用Weblogic中的数据源,数据源是通过OCI的方式配置的。
      

  3.   


    oci的没有配置过,以前在WAS和jBOss下都是用thin这种连接方式。你换成thin方式试试。
      

  4.   

    我们是与别的公司的业务系统互联,业务系统要求必须使用OCI方式去连接。没办法啊。
      

  5.   


    查了一下我机器的目录,在ORACLE_HOME/bin下有个ocijdbc10.dll
    看看weblogic的服务器的path里有没有这个目录,没有的话加上。顺便如果用oci的话,需要机器安装了Oracle客户端哟。
      

  6.   

    安装了10.2.0版客户端。而且已经配成功了两个数据源了。但是同机的新增WEblogic实例就不能配置成功。
      

  7.   

    问题解决了,哎,居然是在配置环境变量是path路径中的BIN写成了小写的了。