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

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

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

    靈魂-放水

    為學日益,為道日損。

    BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
      296 Posts :: 10 Stories :: 274 Comments :: 0 Trackbacks
    近日因項目臨近尾聲,開始啟動工程化的工作。但是才剛剛開始就遇到個不小的問題。我們的發(fā)布是將項目連同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。
    通過查找相關的文檔和資料,發(fā)現(xià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
    按照上文的意思,這是一個由JDK引起的bug,而且今后也不會被修復。

    但是我們的項目有兩個版本,我所做的是WEB版的,而另外一個是獨立運行版本。問題就在這兒,那個獨立運行的版本安裝在帶有空格的目錄中時依然可以正常工作,但是一旦放到TOMCAT中就不行了。通過反復查看上述報錯信息中的各個類文件的報錯位置,也未能找到確切的原因。但是因為這些類中有多處使用了ClassLoader,所以懷疑是因為放到TOMCAT中后缺省的ClassLoader和獨立運行時不同,造成了在使用RMI相關的操作時出現(xiàn)了一些差別。
    posted on 2008-03-11 15:50 放水老倌 閱讀(2853) 評論(0)  編輯  收藏 所屬分類: J2EE
    主站蜘蛛池模板: 亚洲日本乱码一区二区在线二产线 | 日韩激情无码免费毛片| 久久亚洲私人国产精品| 国内精品久久久久影院免费| 亚洲性日韩精品国产一区二区| 国产成人 亚洲欧洲| 国产a级特黄的片子视频免费| 亚洲色欲色欲www在线播放| 午夜爱爱免费视频| 亚洲av无码一区二区三区天堂| 妞干网免费观看视频| 亚洲AV成人精品一区二区三区| 国产乱子影视频上线免费观看| 国产精品亚洲精品日韩动图| 国产jizzjizz免费视频| 二区久久国产乱子伦免费精品| 亚洲人成网亚洲欧洲无码久久| 久久福利青草精品资源站免费| 亚洲狠狠久久综合一区77777| 国产精品爱啪在线线免费观看| 久久精品国产亚洲AV蜜臀色欲 | 毛片免费观看的视频在线| 国产亚洲女在线线精品| 中文字幕在线亚洲精品| 中国人xxxxx69免费视频| 亚洲中文字幕久久精品无码VA| 国产gav成人免费播放视频| 久久精品国产免费一区| 亚洲午夜精品在线| 国产成人精品高清免费| 国产日韩一区二区三免费高清| 亚洲成a人片在线观看中文app| 女人18一级毛片免费观看| 人成午夜免费大片在线观看| 亚洲AV永久无码精品水牛影视| 国产高清免费视频| 爱情岛论坛免费视频| 在线电影你懂的亚洲| 四虎在线播放免费永久视频| 久久免费视频99| 激情吃奶吻胸免费视频xxxx|