[Domino]Tomcat 需要 NCSO.jar 来定位 Domino 异常
| 
            
              编写者
            
            
                             | 
            
              日期
            
            
               | 
            
              关键词
            
            
               | 
| 
            
              郑昀
            
            
              @ultrapower
      
               | 
            
              2005-6-15
      
               | 
            
              Java Tomcat Axis NotesFactory
      
               | 
    
      
    
      现象
    
    
      
       
    
  
  
    
      我试图从
    
    
      Web Service
    
    
      访问
    
    
      Domino
    
    
      。
    
    
      Web Service
    
    
      的构建方法是:
    
    
      Axis+Tomcat
    
    
      ,在
    
    
      Eclipse
    
    
      中加入了
    
    
      
        tomcatPluginV31beta
      
    
    
      插件,从而很容易地发布基于
    
    
      Axis
    
    
      的
    
    
      Java Web Service
    
    
      。
    
    
      
    
      但是,当访问
    
    
      web service
    
    
      时,
    
    
      NotesFactory.createSession
    
    
      却总是无疾而终。加上了
    
    
      
    
      catch(NotesException e) 
  
      
    
      {}
  
      
    
      后,页面报告
    
    
      500
    
    
      错误,在
    
    
      Tomcat 5.0\logs\stdout.log
    
    
      看到如下错误:
    
    
      
| 
            
              Log
            
            
              提示:
            
            
               | 
| 
            
              Exception:
      
               
            
              
                java.lang.NoClassDefFoundError: lotus/domino/NotesException
       
                 
            
              
                       
              
              at java.lang.Class.forName0(Native Method)
      
               
            
              
                       
              
              at java.lang.Class.forName(Unknown Source)
      
               
            
              
                       
              
              at org.apache.axis.utils.ClassUtils$2.run(ClassUtils.java:176)
      
               
            
              
                       
              
              at java.security.AccessController.doPrivileged(Native Method)
      
               
            
              
                       
              
              at org.apache.axis.utils.ClassUtils.loadClass(ClassUtils.java:160)
      
               | 
    
      换成推荐的捕获
    
    
      Notes
    
    
      异常的办法:
    
    
      
    
      catch(Exception e) 
  
      
    
      
               
      
      
            
      
      { 
  
      
    
      
               
      
      
            
      
      
               
      
      if(e instanceof lotus.domino.NotesException)
  
      
    
      
               
      
      
            
      
      
               
      
      {
  
      
    
      
               
      
      
            
      
      
                      
      
      System.out.println( 
  
      
    
      
               
      
      
            
      
      
                                    
      
      "
    
    
      通过
    
    
      CORBA
    
    
      访问数据库发生错误,错误代码为
    
    
      "
  
      
    
      
               
      
      
            
      
      
                      
      
      
                
      
      +((lotus.domino.NotesException)e).id);
  
      
    
      
               
      
      
            
      
      
               
      
      }
  
      
    
      
               
      
      
                
      
      e.printStackTrace(); 
  
      
    
      
               
      
      
                
      
      System.out.println(e.getLocalizedMessage());
  
      
    
      
               
      
      
            
      
      }
  
      
    
      ,一点作用都没有,连错误都不报告了。
    
    
      
    
      解决办法
    
    
      
       
    
  
  
    
      java.lang.NoClassDefFoundError
  
      
       
    
  
  
    
      根据
    
    
      java.lang.NoClassDefFoundError
    
    
      说明没有能够在指定的路径下找到
    
    
      jar
    
    
      包,于是我把
    
    
      NCSO.jar
    
    
      直接放入
    
    
      Tomcat 5.0\common\lib
    
    
      下。重新启动
    
    
      Tomcat
    
    
      ,再次访问
    
    
      Web Service
    
    
      ,于是真正的错误就出来了:
    
    
      
| 
            
              Log
            
            
              提示:
            
            
               | 
| 
            
              通过
            
            
              CORBA
            
            
              访问数据库发生错误,错误代码为
            
            
              4457
      
               
            
              NotesException: 
      
               
            
              Could not get IOR from Domino Server: java.net.UnknownHostException: tian da hai
      
               
            
              
                       
              
              at lotus.domino.NotesFactory.requestIOR(Unknown Source)
      
               
            
              
                       
              
              at lotus.domino.NotesFactory.getIOR(Unknown Source)
      
               
            
              
                       
              
              at lotus.domino.NotesFactory.createSessionC(Unknown Source)
      
               
            
              
                       
              
              at lotus.domino.NotesFactory.createSession(Unknown Source)
      
               
            
              
                       
              
              at com.ultrapower.domino.view.GetMailCount(view.java:48)
      
               
            
              
                       
              
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      
               
            
              
                       
              
              at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
      
               
            
              
                       
              
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
      
               
            
              
                       
              
              at java.lang.reflect.Method.invoke(Unknown Source)
      
               
            
              
                       
              
            
            
              。。。。。。。
            
            
               | 
    
      当然也可以把
    
    
      NCSO.jar
    
    
      所在路径加入
    
    
      CLASSPATH
    
    
      。
    
    
      
    
      虽然是一个很小的细节,但还是写下来了
    
    
      。
    
    
      
    
      
| 
            
              编写者
            
            
               | 
            
              日期
            
            
               | 
            
              关键词
            
            
               | 
| 
            
              郑昀
            
            
              @ultrapower
      
               | 
            
              2005-6-15
      
               | 
            
              Java Tomcat Axis NotesFactory
            
            
               | 
    
      


 
					 
					