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

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

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

    靈魂-放水

    為學(xué)日益,為道日損。

    BlogJava 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
      296 Posts :: 10 Stories :: 274 Comments :: 0 Trackbacks
    近日因項(xiàng)目臨近尾聲,開(kāi)始啟動(dòng)工程化的工作。但是才剛剛開(kāi)始就遇到個(gè)不小的問(wèn)題。我們的發(fā)布是將項(xiàng)目連同TOMCAT一起打包,而我們的項(xiàng)目中使用了RMI的通信,在啟動(dòng)項(xiàng)目時(shí)會(huì)建立一個(gè)RMI的server,這樣問(wèn)題就來(lái)了。當(dāng)我們將項(xiàng)目安裝在帶有空格的目錄中(如C:\Program Files\...)時(shí),在啟動(dòng)TOMCAT時(shí)即會(huì)報(bào)錯(cuò),報(bào)錯(cuò)的信息大致如下(其中隱去了部分公司相關(guān)代碼):
    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
    可以看到路徑被從空格處截?cái)嗔耍率筊MI的server無(wú)法找到啟動(dòng)所需要的classpath。
    通過(guò)查找相關(guān)的文檔和資料,發(fā)現(xiàn)很多人都遇到過(guò)類(lèi)似的問(wèn)題,其中最有意義的信息是
    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
    按照上文的意思,這是一個(gè)由JDK引起的bug,而且今后也不會(huì)被修復(fù)。

    但是我們的項(xiàng)目有兩個(gè)版本,我所做的是WEB版的,而另外一個(gè)是獨(dú)立運(yùn)行版本。問(wèn)題就在這兒,那個(gè)獨(dú)立運(yùn)行的版本安裝在帶有空格的目錄中時(shí)依然可以正常工作,但是一旦放到TOMCAT中就不行了。通過(guò)反復(fù)查看上述報(bào)錯(cuò)信息中的各個(gè)類(lèi)文件的報(bào)錯(cuò)位置,也未能找到確切的原因。但是因?yàn)檫@些類(lèi)中有多處使用了ClassLoader,所以懷疑是因?yàn)榉诺絋OMCAT中后缺省的ClassLoader和獨(dú)立運(yùn)行時(shí)不同,造成了在使用RMI相關(guān)的操作時(shí)出現(xiàn)了一些差別。
    posted on 2008-03-11 15:50 放水老倌 閱讀(2857) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): J2EE
    主站蜘蛛池模板: 亚洲精品国产精品乱码不卡√| 一级毛片免费视频| 人妻仑刮八A级毛片免费看| 亚洲偷自拍另类图片二区| 亚洲综合无码一区二区三区| 久久久久亚洲精品无码蜜桃| 久久精品国产亚洲av水果派| 亚洲美女一区二区三区| 亚洲毛片一级带毛片基地| 亚洲乱码无限2021芒果| 亚洲影视自拍揄拍愉拍| 亚洲欧美日韩中文字幕在线一区| 亚洲а∨精品天堂在线| 国产精品成人亚洲| 一级人做人a爰免费视频 | 国产gv天堂亚洲国产gv刚刚碰| 精品亚洲成α人无码成α在线观看 | 男人和女人高潮免费网站| 一个人晚上在线观看的免费视频 | 亚洲国产亚洲综合在线尤物| 亚洲中文久久精品无码1| 亚洲综合色一区二区三区| 亚洲av无码av在线播放| 日韩高清在线高清免费| 国产在线观看免费完整版中文版| 亚洲成网777777国产精品| 18国产精品白浆在线观看免费| 真人做人试看60分钟免费视频| 成在人线AV无码免费| 免费国产在线观看老王影院| 国产亚洲AV手机在线观看| 久久久久亚洲AV片无码下载蜜桃 | 中文字幕亚洲日韩无线码| 亚洲AV无码久久精品色欲| 亚洲伊人久久大香线焦| 亚洲av日韩精品久久久久久a| 亚洲黄片手机免费观看| 18禁止看的免费污网站| 91精品国产免费久久久久久青草| 毛片在线免费视频| 99re在线这里只有精品免费|