<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    靈魂-放水

    為學日益,為道日損。

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      296 Posts :: 10 Stories :: 274 Comments :: 0 Trackbacks
    近日因項目臨近尾聲,開始啟動工程化的工作。但是才剛剛開始就遇到個不小的問題。我們的發布是將項目連同TOMCAT一起打包,而我們的項目中使用了RMI的通信,在啟動項目時會建立一個RMI的server,這樣問題就來了。當我們將項目安裝在帶有空格的目錄中(如C:\Program Files\...)時,在啟動TOMCAT時即會報錯,報錯的信息大致如下(其中隱去了部分公司相關代碼):
    java.io.IOException: Cannot bind to URL [jmx]: javax.naming.CommunicationException: Failed to retrieve stub from server 127.0.0.1:1099 [Root exception is java.net.MalformedURLException: no protocol: Files\]
        at javax.management.remote.rmi.RMIConnectorServer.newIOException(RMIConnectorServer.java:
    814)
        at javax.management.remote.rmi.RMIConnectorServer.start(RMIConnectorServer.java:
    431)
        at 
    javax.servlet.GenericServlet.init(GenericServlet.java:
    211)
        at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:
    1029)
        at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:
    862)
        at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:
    4013)
        at org.apache.catalina.core.StandardContext.start(StandardContext.java:
    4357)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:
    823)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:
    807)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:
    595)
        at org.apache.catalina.core.StandardHostDeployer.addChild(StandardHostDeployer.java:
    903)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
    39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
    25)
        at java.lang.reflect.Method.invoke(Method.java:
    585)
        at org.apache.commons.beanutils.MethodUtils.invokeMethod(MethodUtils.java:
    216)
        at org.apache.commons.digester.SetNextRule.end(SetNextRule.java:
    256)
        at org.apache.commons.digester.Rule.end(Rule.java:
    276)
        at org.apache.commons.digester.Digester.endElement(Digester.java:
    1058)
        at org.apache.catalina.util.CatalinaDigester.endElement(CatalinaDigester.java:
    76)
        at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
        at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source)
        at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
        at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
        at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
        at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
        at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
        at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
        at org.apache.commons.digester.Digester.parse(Digester.java:
    1567)
        at org.apache.catalina.core.StandardHostDeployer.install(StandardHostDeployer.java:
    488)
        at org.apache.catalina.core.StandardHost.install(StandardHost.java:
    863)
        at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:
    483)
        at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:
    427)
        at org.apache.catalina.startup.HostConfig.start(HostConfig.java:
    983)
        at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:
    349)
        at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:
    119)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:
    1091)
        at org.apache.catalina.core.StandardHost.start(StandardHost.java:
    789)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:
    1083)
        at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:
    478)
        at org.apache.catalina.core.StandardService.start(StandardService.java:
    480)
        at org.apache.catalina.core.StandardServer.start(StandardServer.java:
    2313)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:
    556)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
    39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
    25)
        at java.lang.reflect.Method.invoke(Method.java:
    585)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:
    287)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:
    425)
    Caused by: javax.naming.CommunicationException: Failed to retrieve stub from server 
    127.0.0.1:1099 [Root exception is java.net.MalformedURLException: no protocol: Files\]
        at org.jnp.interfaces.NamingContext.getServer(NamingContext.java:
    161)
        at org.jnp.interfaces.NamingContext.checkRef(NamingContext.java:
    871)
        at org.jnp.interfaces.NamingContext.bind(NamingContext.java:
    377)
        at org.jnp.interfaces.NamingContext.bind(NamingContext.java:
    370)
        at javax.naming.InitialContext.bind(InitialContext.java:
    359)
        at javax.management.remote.rmi.RMIConnectorServer.bind(RMIConnectorServer.java:
    635)
        at javax.management.remote.rmi.RMIConnectorServer.start(RMIConnectorServer.java:
    427)
         
    51 more
    Caused by: java.net.MalformedURLException: no protocol: Files\
        at java.net.URL.
    <init>(URL.java:567)
        at java.net.URL.
    <init>(URL.java:464)
        at java.net.URL.
    <init>(URL.java:413)
        at sun.rmi.server.LoaderHandler.pathToURLs(LoaderHandler.java:
    747)
        at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:
    147)
        at java.rmi.server.RMIClassLoader$
    2.loadClass(RMIClassLoader.java:620)
        at java.rmi.server.RMIClassLoader.loadClass(RMIClassLoader.java:
    247)
        at sun.rmi.server.MarshalInputStream.resolveClass(MarshalInputStream.java:
    197)
        at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:
    1538)
        at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:
    1460)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:
    1693)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:
    1299)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:
    339)
        at java.rmi.MarshalledObject.get(MarshalledObject.java:
    135)
        at org.jnp.interfaces.NamingContext.getServer(NamingContext.java:
    151)
         
    57 more
    可以看到路徑被從空格處截斷了,致使RMI的server無法找到啟動所需要的classpath。
    通過查找相關的文檔和資料,發現很多人都遇到過類似的問題,其中最有意義的信息是
    There is a bug in the JDK which makes RMI fail if Tomcat is installed in directory containing spaces (e.g. C:\Program Files\Apache Group\Jakarta Tomcat 5.0). This bug won't be fixed, so you can only workaround it.

    The installation should have checked the folder name for you and promted you to reinstall Tomcat. If you missed that or renamed the folder after you installed KIM, follow the seme advice now: reinstall Tomcat in a folder (using underscores instead of spaces for example) or just rename folders needed so that the full path contains no spaces. Then reinstall KIM too and point it to the new loacation when asked for Tomcat server, or to skip the new install just manually edit your start/stop Tomcat bat/sh files in %KIM_Platform_Home%/bin directory where this path is used.

    For more details refer to:

    http://nagoya.apache.org/bugzilla/show_bug.cgi?id=4543
    http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4496398
    http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4273532
    按照上文的意思,這是一個由JDK引起的bug,而且今后也不會被修復。

    但是我們的項目有兩個版本,我所做的是WEB版的,而另外一個是獨立運行版本。問題就在這兒,那個獨立運行的版本安裝在帶有空格的目錄中時依然可以正常工作,但是一旦放到TOMCAT中就不行了。通過反復查看上述報錯信息中的各個類文件的報錯位置,也未能找到確切的原因。但是因為這些類中有多處使用了ClassLoader,所以懷疑是因為放到TOMCAT中后缺省的ClassLoader和獨立運行時不同,造成了在使用RMI相關的操作時出現了一些差別。
    posted on 2008-03-11 15:50 放水老倌 閱讀(2858) 評論(0)  編輯  收藏 所屬分類: J2EE
    主站蜘蛛池模板: 好爽…又高潮了免费毛片| 亚洲AV无码专区在线亚| 免费黄色app网站| 三年片在线观看免费观看大全一 | 在线播放亚洲精品| 91亚洲性爱在线视频| 亚洲精品无码MV在线观看| 最新69国产成人精品免费视频动漫 | 一级看片免费视频囗交| 亚洲熟女综合一区二区三区| 香蕉蕉亚亚洲aav综合| 亚洲一级Av无码毛片久久精品| 国内自产少妇自拍区免费| 免费在线观看h片| 无码精品人妻一区二区三区免费看 | 亚洲熟妇AV日韩熟妇在线| 亚洲最大在线观看| 亚洲日本精品一区二区| 国产亚洲精品资源在线26u| 亚洲综合精品网站在线观看| 国产一级高清视频免费看| 久久久久国产精品免费免费搜索 | 永久亚洲成a人片777777| 永久黄网站色视频免费直播| 毛片免费观看的视频在线| 91麻豆最新在线人成免费观看| 香港a毛片免费观看| 青青草原1769久久免费播放| 爽爽爽爽爽爽爽成人免费观看| 永久免费观看黄网站| 一级毛片免费在线观看网站| 黄色a级片免费看| 男人和女人高潮免费网站| 色婷婷综合缴情综免费观看| 免费无码专区毛片高潮喷水| 深夜a级毛片免费无码| 青草青草视频2免费观看| 男女猛烈激情xx00免费视频| 日韩精品免费一线在线观看| 一个人看的www视频免费在线观看| 乱淫片免费影院观看|