You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@felix.apache.org by charlie kim <ch...@yahoo.com> on 2011/10/14 20:14:50 UTC

org.apache.felix.framework.URLHandlersStreamHandlerProxy.parseURL generates Unknown protocol: resource

Hi, I'm generating an XML schema using JAXB and converting it to Relax ng with msv GrammarLoader under Felix container.

Following exception is generated and by stepping through the code, here is the actual line of code that throws an exception.

Can some one help me on figure out why "Unknown protocol: resource" is thrown here?

Thank you.


    private static final ThreadLocal m_loopCheck = new ThreadLocal();
    protected void parseURL(URL url, String spec, int start, int limit)
    {
        Object svc = getStreamHandlerService();
        if (svc == null)
        {
            throw new IllegalStateException(
                "Unknown protocol: " + url.getProtocol());
        }



javax.xml.bind.JAXBException: Couldn't parse auto-generated schema
 - with linked exception:
[java.net.MalformedURLException: Unknown protocol: resource]
        at yjava.ws.util.filter.JerseySchemaGenerator.generateRelaxGrammar(JerseySchemaGenerator.java:107)
        at yjava.ws.util.filter.WebServiceFilter.sendGrammar(WebServiceFilter.java:472)
        at yjava.ws.util.filter.WebServiceFilter.filter(WebServiceFilter.java:391)
        at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1310)
        at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1239)
        at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1229)
        at com.yahoo.disc.handler.jersey.JerseyContent.close(JerseyContent.java:188)
        at com.yahoo.disc.core.ContainerSnapshot$ContentProxy.close(ContainerSnapshot.java:144)
        at com.yahoo.disc.service.http.netty.server.HttpServerRequestHandler.handleHttpRequest(HttpServerRequestHandler.java:294)
        at com.yahoo.disc.service.http.netty.server.HttpServerRequestHandler.messageReceived(HttpServerRequestHandler.java:152)
        at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:80)
        at org.jboss.netty.handler.timeout.IdleStateAwareChannelUpstreamHandler.handleUpstream(IdleStateAwareChannelUpstreamHandler.java:48)
        at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:545)
        at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:754)
        at yjava.netty.filters.SecurityFilterUpstreamHandler.messageReceived(SecurityFilterUpstreamHandler.java:111)
        at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:80)
        at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:545)
        at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:754)
        at org.jboss.netty.handler.codec.http.HttpContentEncoder.messageReceived(HttpContentEncoder.java:83)
        at org.jboss.netty.channel.SimpleChannelHandler.handleUpstream(SimpleChannelHandler.java:100)
        at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:545)
        at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:754)
        at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:302)
        at org.jboss.netty.handler.codec.replay.ReplayingDecoder.unfoldAndfireMessageReceived(ReplayingDecoder.java:522)
        at org.jboss.netty.handler.codec.replay.ReplayingDecoder.callDecode(ReplayingDecoder.java:506)
        at org.jboss.netty.handler.codec.replay.ReplayingDecoder.messageReceived(ReplayingDecoder.java:443)
        at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:80)
        at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:545)
        at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:754)
        at org.jboss.netty.handler.timeout.IdleStateHandler.messageReceived(IdleStateHandler.java:276)
        at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:80)
        at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:545)
        at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:540)
        at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:274)
        at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:261)
        at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:349)
        at org.jboss.netty.channel.socket.nio.NioWorker.processSelectedKeys(NioWorker.java:280)
        at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:200)
        at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
        at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:44)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:662)
Caused by: java.net.MalformedURLException: Unknown protocol: resource
        at com.sun.msv.reader.util.GrammarLoader$ThrowController.error(GrammarLoader.java:152)
        at com.sun.msv.reader.Controller.error(Controller.java:49)
        at com.sun.msv.reader.Controller.error(Controller.java:49)
        at com.sun.msv.reader.Controller.error(Controller.java:69)
        at com.sun.msv.reader.GrammarReader._parse(GrammarReader.java:461)
        at com.sun.msv.reader.GrammarReader.switchSource(GrammarReader.java:429)
        at com.sun.msv.reader.GrammarReader.switchSource(GrammarReader.java:402)
        at com.sun.msv.reader.xmlschema.XMLSchemaReader.switchSource(XMLSchemaReader.java:677)
        at com.sun.msv.reader.xmlschema.ImportState.startSelf(ImportState.java:41)
        at com.sun.msv.reader.State.init(State.java:153)
        at com.sun.msv.reader.GrammarReader.pushState(GrammarReader.java:576)
        at com.sun.msv.reader.SimpleState.startElement(SimpleState.java:71)
        at org.xml.sax.helpers.XMLFilterImpl.startElement(XMLFilterImpl.java:527)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:501)
        at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:179)
        at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:377)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2755)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
        at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
        at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
        at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
        at com.sun.msv.reader.util.GrammarLoader._loadSchema(GrammarLoader.java:514)
        at com.sun.msv.reader.util.GrammarLoader.parse(GrammarLoader.java:325)
        at com.sun.msv.reader.util.GrammarLoader.loadSchema(GrammarLoader.java:189)
        at com.sun.msv.reader.util.GrammarLoader.loadSchema(GrammarLoader.java:236)
        at yjava.ws.util.filter.JerseySchemaGenerator.generateRelaxGrammarDoc(JerseySchemaGenerator.java:164)
        at yjava.ws.util.filter.JerseySchemaGenerator.generateRelaxGrammar(JerseySchemaGenerator.java:103)
        ... 42 more
Caused by: java.net.MalformedURLException: Unknown protocol: resource
        at java.net.URL.<init>(URL.java:601)
        at java.net.URL.<init>(URL.java:464)
        at java.net.URL.<init>(URL.java:413)
        at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:650)
        at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:186)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:772)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
        at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
        at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
        at com.sun.msv.reader.GrammarReader._parse(GrammarReader.java:456)
        ... 68 more

Re: org.apache.felix.framework.URLHandlersStreamHandlerProxy.parseURL generates Unknown protocol: resource

Posted by "Richard S. Hall" <he...@ungoverned.org>.
On 10/14/11 7:26 PM, charlesk40 wrote:
>
> So it is the missing handler which I need to register through
> URLStreamHandlerFactory.
>
> It looks like the Felix already registers
> org.apache.felix.framework.URLHandlers.  Is there any way to get at this
> URLHandlers so that I can add my resource handler?

Check out the URL Handlers service in the OSGi specification.

-> richard

>
> Would be easier and prefered to use the java.protocol.handler.pkgs system
> property to set my resource handler?
>
> Thank you.
>
>
>
>
> Richard S. Hall wrote:
>> Ultimately, this looks correct.
>>
>> I'm not familiar with the "resource:" protocol, so it makes sense that
>> you get an error when trying to create a URL using that protocol.
>> Someone must provider it via the URL handler service...
>>
>> ->  richard
>>
>>
>> On 10/14/11 14:14 , charlie kim wrote:
>>> Hi, I'm generating an XML schema using JAXB and converting it to Relax ng
>>> with msv GrammarLoader under Felix container.
>>>
>>> Following exception is generated and by stepping through the code, here
>>> is the actual line of code that throws an exception.
>>>
>>> Can some one help me on figure out why "Unknown protocol: resource" is
>>> thrown here?
>>>
>>> Thank you.
>>>
>>>
>>>       private static final ThreadLocal m_loopCheck = new ThreadLocal();
>>>       protected void parseURL(URL url, String spec, int start, int limit)
>>>       {
>>>           Object svc = getStreamHandlerService();
>>>           if (svc == null)
>>>           {
>>>               throw new IllegalStateException(
>>>                   "Unknown protocol: " + url.getProtocol());
>>>           }
>>>
>>>
>>>
>>> javax.xml.bind.JAXBException: Couldn't parse auto-generated schema
>>>    - with linked exception:
>>> [java.net.MalformedURLException: Unknown protocol: resource]
>>>           at
>>> yjava.ws.util.filter.JerseySchemaGenerator.generateRelaxGrammar(JerseySchemaGenerator.java:107)
>>>           at
>>> yjava.ws.util.filter.WebServiceFilter.sendGrammar(WebServiceFilter.java:472)
>>>           at
>>> yjava.ws.util.filter.WebServiceFilter.filter(WebServiceFilter.java:391)
>>>           at
>>> com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1310)
>>>           at
>>> com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1239)
>>>           at
>>> com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1229)
>>>           at
>>> com.yahoo.disc.handler.jersey.JerseyContent.close(JerseyContent.java:188)
>>>           at
>>> com.yahoo.disc.core.ContainerSnapshot$ContentProxy.close(ContainerSnapshot.java:144)
>>>           at
>>> com.yahoo.disc.service.http.netty.server.HttpServerRequestHandler.handleHttpRequest(HttpServerRequestHandler.java:294)
>>>           at
>>> com.yahoo.disc.service.http.netty.server.HttpServerRequestHandler.messageReceived(HttpServerRequestHandler.java:152)
>>>           at
>>> org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:80)
>>>           at
>>> org.jboss.netty.handler.timeout.IdleStateAwareChannelUpstreamHandler.handleUpstream(IdleStateAwareChannelUpstreamHandler.java:48)
>>>           at
>>> org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:545)
>>>           at
>>> org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:754)
>>>           at
>>> yjava.netty.filters.SecurityFilterUpstreamHandler.messageReceived(SecurityFilterUpstreamHandler.java:111)
>>>           at
>>> org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:80)
>>>           at
>>> org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:545)
>>>           at
>>> org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:754)
>>>           at
>>> org.jboss.netty.handler.codec.http.HttpContentEncoder.messageReceived(HttpContentEncoder.java:83)
>>>           at
>>> org.jboss.netty.channel.SimpleChannelHandler.handleUpstream(SimpleChannelHandler.java:100)
>>>           at
>>> org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:545)
>>>           at
>>> org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:754)
>>>           at
>>> org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:302)
>>>           at
>>> org.jboss.netty.handler.codec.replay.ReplayingDecoder.unfoldAndfireMessageReceived(ReplayingDecoder.java:522)
>>>           at
>>> org.jboss.netty.handler.codec.replay.ReplayingDecoder.callDecode(ReplayingDecoder.java:506)
>>>           at
>>> org.jboss.netty.handler.codec.replay.ReplayingDecoder.messageReceived(ReplayingDecoder.java:443)
>>>           at
>>> org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:80)
>>>           at
>>> org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:545)
>>>           at
>>> org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:754)
>>>           at
>>> org.jboss.netty.handler.timeout.IdleStateHandler.messageReceived(IdleStateHandler.java:276)
>>>           at
>>> org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:80)
>>>           at
>>> org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:545)
>>>           at
>>> org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:540)
>>>           at
>>> org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:274)
>>>           at
>>> org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:261)
>>>           at
>>> org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:349)
>>>           at
>>> org.jboss.netty.channel.socket.nio.NioWorker.processSelectedKeys(NioWorker.java:280)
>>>           at
>>> org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:200)
>>>           at
>>> org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
>>>           at
>>> org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:44)
>>>           at
>>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>>>           at
>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>>>           at java.lang.Thread.run(Thread.java:662)
>>> Caused by: java.net.MalformedURLException: Unknown protocol: resource
>>>           at
>>> com.sun.msv.reader.util.GrammarLoader$ThrowController.error(GrammarLoader.java:152)
>>>           at com.sun.msv.reader.Controller.error(Controller.java:49)
>>>           at com.sun.msv.reader.Controller.error(Controller.java:49)
>>>           at com.sun.msv.reader.Controller.error(Controller.java:69)
>>>           at
>>> com.sun.msv.reader.GrammarReader._parse(GrammarReader.java:461)
>>>           at
>>> com.sun.msv.reader.GrammarReader.switchSource(GrammarReader.java:429)
>>>           at
>>> com.sun.msv.reader.GrammarReader.switchSource(GrammarReader.java:402)
>>>           at
>>> com.sun.msv.reader.xmlschema.XMLSchemaReader.switchSource(XMLSchemaReader.java:677)
>>>           at
>>> com.sun.msv.reader.xmlschema.ImportState.startSelf(ImportState.java:41)
>>>           at com.sun.msv.reader.State.init(State.java:153)
>>>           at
>>> com.sun.msv.reader.GrammarReader.pushState(GrammarReader.java:576)
>>>           at
>>> com.sun.msv.reader.SimpleState.startElement(SimpleState.java:71)
>>>           at
>>> org.xml.sax.helpers.XMLFilterImpl.startElement(XMLFilterImpl.java:527)
>>>           at
>>> com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:501)
>>>           at
>>> com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:179)
>>>           at
>>> com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:377)
>>>           at
>>> com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2755)
>>>           at
>>> com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
>>>           at
>>> com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
>>>           at
>>> com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)
>>>           at
>>> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)
>>>           at
>>> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
>>>           at
>>> com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
>>>           at
>>> com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
>>>           at
>>> com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
>>>           at
>>> com.sun.msv.reader.util.GrammarLoader._loadSchema(GrammarLoader.java:514)
>>>           at
>>> com.sun.msv.reader.util.GrammarLoader.parse(GrammarLoader.java:325)
>>>           at
>>> com.sun.msv.reader.util.GrammarLoader.loadSchema(GrammarLoader.java:189)
>>>           at
>>> com.sun.msv.reader.util.GrammarLoader.loadSchema(GrammarLoader.java:236)
>>>           at
>>> yjava.ws.util.filter.JerseySchemaGenerator.generateRelaxGrammarDoc(JerseySchemaGenerator.java:164)
>>>           at
>>> yjava.ws.util.filter.JerseySchemaGenerator.generateRelaxGrammar(JerseySchemaGenerator.java:103)
>>>           ... 42 more
>>> Caused by: java.net.MalformedURLException: Unknown protocol: resource
>>>           at java.net.URL.<init>(URL.java:601)
>>>           at java.net.URL.<init>(URL.java:464)
>>>           at java.net.URL.<init>(URL.java:413)
>>>           at
>>> com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:650)
>>>           at
>>> com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:186)
>>>           at
>>> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:772)
>>>           at
>>> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
>>>           at
>>> com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
>>>           at
>>> com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
>>>           at
>>> com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
>>>           at
>>> com.sun.msv.reader.GrammarReader._parse(GrammarReader.java:456)
>>>           ... 68 more
>>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
>> For additional commands, e-mail: users-help@felix.apache.org
>>
>>
>>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
For additional commands, e-mail: users-help@felix.apache.org


Re: org.apache.felix.framework.URLHandlersStreamHandlerProxy.parseURL generates Unknown protocol: resource

Posted by charlesk40 <ch...@yahoo.com>.

So it is the missing handler which I need to register through
URLStreamHandlerFactory.

It looks like the Felix already registers
org.apache.felix.framework.URLHandlers.  Is there any way to get at this
URLHandlers so that I can add my resource handler?

Would be easier and prefered to use the java.protocol.handler.pkgs system
property to set my resource handler?

Thank you.




Richard S. Hall wrote:
> 
> Ultimately, this looks correct.
> 
> I'm not familiar with the "resource:" protocol, so it makes sense that 
> you get an error when trying to create a URL using that protocol. 
> Someone must provider it via the URL handler service...
> 
> -> richard
> 
> 
> On 10/14/11 14:14 , charlie kim wrote:
>> Hi, I'm generating an XML schema using JAXB and converting it to Relax ng
>> with msv GrammarLoader under Felix container.
>>
>> Following exception is generated and by stepping through the code, here
>> is the actual line of code that throws an exception.
>>
>> Can some one help me on figure out why "Unknown protocol: resource" is
>> thrown here?
>>
>> Thank you.
>>
>>
>>      private static final ThreadLocal m_loopCheck = new ThreadLocal();
>>      protected void parseURL(URL url, String spec, int start, int limit)
>>      {
>>          Object svc = getStreamHandlerService();
>>          if (svc == null)
>>          {
>>              throw new IllegalStateException(
>>                  "Unknown protocol: " + url.getProtocol());
>>          }
>>
>>
>>
>> javax.xml.bind.JAXBException: Couldn't parse auto-generated schema
>>   - with linked exception:
>> [java.net.MalformedURLException: Unknown protocol: resource]
>>          at
>> yjava.ws.util.filter.JerseySchemaGenerator.generateRelaxGrammar(JerseySchemaGenerator.java:107)
>>          at
>> yjava.ws.util.filter.WebServiceFilter.sendGrammar(WebServiceFilter.java:472)
>>          at
>> yjava.ws.util.filter.WebServiceFilter.filter(WebServiceFilter.java:391)
>>          at
>> com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1310)
>>          at
>> com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1239)
>>          at
>> com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1229)
>>          at
>> com.yahoo.disc.handler.jersey.JerseyContent.close(JerseyContent.java:188)
>>          at
>> com.yahoo.disc.core.ContainerSnapshot$ContentProxy.close(ContainerSnapshot.java:144)
>>          at
>> com.yahoo.disc.service.http.netty.server.HttpServerRequestHandler.handleHttpRequest(HttpServerRequestHandler.java:294)
>>          at
>> com.yahoo.disc.service.http.netty.server.HttpServerRequestHandler.messageReceived(HttpServerRequestHandler.java:152)
>>          at
>> org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:80)
>>          at
>> org.jboss.netty.handler.timeout.IdleStateAwareChannelUpstreamHandler.handleUpstream(IdleStateAwareChannelUpstreamHandler.java:48)
>>          at
>> org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:545)
>>          at
>> org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:754)
>>          at
>> yjava.netty.filters.SecurityFilterUpstreamHandler.messageReceived(SecurityFilterUpstreamHandler.java:111)
>>          at
>> org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:80)
>>          at
>> org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:545)
>>          at
>> org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:754)
>>          at
>> org.jboss.netty.handler.codec.http.HttpContentEncoder.messageReceived(HttpContentEncoder.java:83)
>>          at
>> org.jboss.netty.channel.SimpleChannelHandler.handleUpstream(SimpleChannelHandler.java:100)
>>          at
>> org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:545)
>>          at
>> org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:754)
>>          at
>> org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:302)
>>          at
>> org.jboss.netty.handler.codec.replay.ReplayingDecoder.unfoldAndfireMessageReceived(ReplayingDecoder.java:522)
>>          at
>> org.jboss.netty.handler.codec.replay.ReplayingDecoder.callDecode(ReplayingDecoder.java:506)
>>          at
>> org.jboss.netty.handler.codec.replay.ReplayingDecoder.messageReceived(ReplayingDecoder.java:443)
>>          at
>> org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:80)
>>          at
>> org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:545)
>>          at
>> org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:754)
>>          at
>> org.jboss.netty.handler.timeout.IdleStateHandler.messageReceived(IdleStateHandler.java:276)
>>          at
>> org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:80)
>>          at
>> org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:545)
>>          at
>> org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:540)
>>          at
>> org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:274)
>>          at
>> org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:261)
>>          at
>> org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:349)
>>          at
>> org.jboss.netty.channel.socket.nio.NioWorker.processSelectedKeys(NioWorker.java:280)
>>          at
>> org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:200)
>>          at
>> org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
>>          at
>> org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:44)
>>          at
>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>>          at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>>          at java.lang.Thread.run(Thread.java:662)
>> Caused by: java.net.MalformedURLException: Unknown protocol: resource
>>          at
>> com.sun.msv.reader.util.GrammarLoader$ThrowController.error(GrammarLoader.java:152)
>>          at com.sun.msv.reader.Controller.error(Controller.java:49)
>>          at com.sun.msv.reader.Controller.error(Controller.java:49)
>>          at com.sun.msv.reader.Controller.error(Controller.java:69)
>>          at
>> com.sun.msv.reader.GrammarReader._parse(GrammarReader.java:461)
>>          at
>> com.sun.msv.reader.GrammarReader.switchSource(GrammarReader.java:429)
>>          at
>> com.sun.msv.reader.GrammarReader.switchSource(GrammarReader.java:402)
>>          at
>> com.sun.msv.reader.xmlschema.XMLSchemaReader.switchSource(XMLSchemaReader.java:677)
>>          at
>> com.sun.msv.reader.xmlschema.ImportState.startSelf(ImportState.java:41)
>>          at com.sun.msv.reader.State.init(State.java:153)
>>          at
>> com.sun.msv.reader.GrammarReader.pushState(GrammarReader.java:576)
>>          at
>> com.sun.msv.reader.SimpleState.startElement(SimpleState.java:71)
>>          at
>> org.xml.sax.helpers.XMLFilterImpl.startElement(XMLFilterImpl.java:527)
>>          at
>> com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:501)
>>          at
>> com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:179)
>>          at
>> com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:377)
>>          at
>> com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2755)
>>          at
>> com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
>>          at
>> com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
>>          at
>> com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)
>>          at
>> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)
>>          at
>> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
>>          at
>> com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
>>          at
>> com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
>>          at
>> com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
>>          at
>> com.sun.msv.reader.util.GrammarLoader._loadSchema(GrammarLoader.java:514)
>>          at
>> com.sun.msv.reader.util.GrammarLoader.parse(GrammarLoader.java:325)
>>          at
>> com.sun.msv.reader.util.GrammarLoader.loadSchema(GrammarLoader.java:189)
>>          at
>> com.sun.msv.reader.util.GrammarLoader.loadSchema(GrammarLoader.java:236)
>>          at
>> yjava.ws.util.filter.JerseySchemaGenerator.generateRelaxGrammarDoc(JerseySchemaGenerator.java:164)
>>          at
>> yjava.ws.util.filter.JerseySchemaGenerator.generateRelaxGrammar(JerseySchemaGenerator.java:103)
>>          ... 42 more
>> Caused by: java.net.MalformedURLException: Unknown protocol: resource
>>          at java.net.URL.<init>(URL.java:601)
>>          at java.net.URL.<init>(URL.java:464)
>>          at java.net.URL.<init>(URL.java:413)
>>          at
>> com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:650)
>>          at
>> com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:186)
>>          at
>> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:772)
>>          at
>> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
>>          at
>> com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
>>          at
>> com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
>>          at
>> com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
>>          at
>> com.sun.msv.reader.GrammarReader._parse(GrammarReader.java:456)
>>          ... 68 more
>>
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
> For additional commands, e-mail: users-help@felix.apache.org
> 
> 
> 

-- 
View this message in context: http://old.nabble.com/org.apache.felix.framework.URLHandlersStreamHandlerProxy.parseURL-generates-Unknown-protocol%3A-resource-tp32654548p32656015.html
Sent from the Apache Felix - Users mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
For additional commands, e-mail: users-help@felix.apache.org


Re: org.apache.felix.framework.URLHandlersStreamHandlerProxy.parseURL generates Unknown protocol: resource

Posted by "Richard S. Hall" <he...@ungoverned.org>.
Ultimately, this looks correct.

I'm not familiar with the "resource:" protocol, so it makes sense that 
you get an error when trying to create a URL using that protocol. 
Someone must provider it via the URL handler service...

-> richard


On 10/14/11 14:14 , charlie kim wrote:
> Hi, I'm generating an XML schema using JAXB and converting it to Relax ng with msv GrammarLoader under Felix container.
>
> Following exception is generated and by stepping through the code, here is the actual line of code that throws an exception.
>
> Can some one help me on figure out why "Unknown protocol: resource" is thrown here?
>
> Thank you.
>
>
>      private static final ThreadLocal m_loopCheck = new ThreadLocal();
>      protected void parseURL(URL url, String spec, int start, int limit)
>      {
>          Object svc = getStreamHandlerService();
>          if (svc == null)
>          {
>              throw new IllegalStateException(
>                  "Unknown protocol: " + url.getProtocol());
>          }
>
>
>
> javax.xml.bind.JAXBException: Couldn't parse auto-generated schema
>   - with linked exception:
> [java.net.MalformedURLException: Unknown protocol: resource]
>          at yjava.ws.util.filter.JerseySchemaGenerator.generateRelaxGrammar(JerseySchemaGenerator.java:107)
>          at yjava.ws.util.filter.WebServiceFilter.sendGrammar(WebServiceFilter.java:472)
>          at yjava.ws.util.filter.WebServiceFilter.filter(WebServiceFilter.java:391)
>          at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1310)
>          at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1239)
>          at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1229)
>          at com.yahoo.disc.handler.jersey.JerseyContent.close(JerseyContent.java:188)
>          at com.yahoo.disc.core.ContainerSnapshot$ContentProxy.close(ContainerSnapshot.java:144)
>          at com.yahoo.disc.service.http.netty.server.HttpServerRequestHandler.handleHttpRequest(HttpServerRequestHandler.java:294)
>          at com.yahoo.disc.service.http.netty.server.HttpServerRequestHandler.messageReceived(HttpServerRequestHandler.java:152)
>          at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:80)
>          at org.jboss.netty.handler.timeout.IdleStateAwareChannelUpstreamHandler.handleUpstream(IdleStateAwareChannelUpstreamHandler.java:48)
>          at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:545)
>          at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:754)
>          at yjava.netty.filters.SecurityFilterUpstreamHandler.messageReceived(SecurityFilterUpstreamHandler.java:111)
>          at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:80)
>          at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:545)
>          at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:754)
>          at org.jboss.netty.handler.codec.http.HttpContentEncoder.messageReceived(HttpContentEncoder.java:83)
>          at org.jboss.netty.channel.SimpleChannelHandler.handleUpstream(SimpleChannelHandler.java:100)
>          at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:545)
>          at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:754)
>          at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:302)
>          at org.jboss.netty.handler.codec.replay.ReplayingDecoder.unfoldAndfireMessageReceived(ReplayingDecoder.java:522)
>          at org.jboss.netty.handler.codec.replay.ReplayingDecoder.callDecode(ReplayingDecoder.java:506)
>          at org.jboss.netty.handler.codec.replay.ReplayingDecoder.messageReceived(ReplayingDecoder.java:443)
>          at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:80)
>          at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:545)
>          at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:754)
>          at org.jboss.netty.handler.timeout.IdleStateHandler.messageReceived(IdleStateHandler.java:276)
>          at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:80)
>          at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:545)
>          at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:540)
>          at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:274)
>          at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:261)
>          at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:349)
>          at org.jboss.netty.channel.socket.nio.NioWorker.processSelectedKeys(NioWorker.java:280)
>          at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:200)
>          at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
>          at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:44)
>          at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>          at java.lang.Thread.run(Thread.java:662)
> Caused by: java.net.MalformedURLException: Unknown protocol: resource
>          at com.sun.msv.reader.util.GrammarLoader$ThrowController.error(GrammarLoader.java:152)
>          at com.sun.msv.reader.Controller.error(Controller.java:49)
>          at com.sun.msv.reader.Controller.error(Controller.java:49)
>          at com.sun.msv.reader.Controller.error(Controller.java:69)
>          at com.sun.msv.reader.GrammarReader._parse(GrammarReader.java:461)
>          at com.sun.msv.reader.GrammarReader.switchSource(GrammarReader.java:429)
>          at com.sun.msv.reader.GrammarReader.switchSource(GrammarReader.java:402)
>          at com.sun.msv.reader.xmlschema.XMLSchemaReader.switchSource(XMLSchemaReader.java:677)
>          at com.sun.msv.reader.xmlschema.ImportState.startSelf(ImportState.java:41)
>          at com.sun.msv.reader.State.init(State.java:153)
>          at com.sun.msv.reader.GrammarReader.pushState(GrammarReader.java:576)
>          at com.sun.msv.reader.SimpleState.startElement(SimpleState.java:71)
>          at org.xml.sax.helpers.XMLFilterImpl.startElement(XMLFilterImpl.java:527)
>          at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:501)
>          at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:179)
>          at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:377)
>          at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2755)
>          at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
>          at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
>          at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)
>          at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)
>          at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
>          at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
>          at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
>          at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
>          at com.sun.msv.reader.util.GrammarLoader._loadSchema(GrammarLoader.java:514)
>          at com.sun.msv.reader.util.GrammarLoader.parse(GrammarLoader.java:325)
>          at com.sun.msv.reader.util.GrammarLoader.loadSchema(GrammarLoader.java:189)
>          at com.sun.msv.reader.util.GrammarLoader.loadSchema(GrammarLoader.java:236)
>          at yjava.ws.util.filter.JerseySchemaGenerator.generateRelaxGrammarDoc(JerseySchemaGenerator.java:164)
>          at yjava.ws.util.filter.JerseySchemaGenerator.generateRelaxGrammar(JerseySchemaGenerator.java:103)
>          ... 42 more
> Caused by: java.net.MalformedURLException: Unknown protocol: resource
>          at java.net.URL.<init>(URL.java:601)
>          at java.net.URL.<init>(URL.java:464)
>          at java.net.URL.<init>(URL.java:413)
>          at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:650)
>          at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:186)
>          at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:772)
>          at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
>          at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
>          at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
>          at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
>          at com.sun.msv.reader.GrammarReader._parse(GrammarReader.java:456)
>          ... 68 more
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
For additional commands, e-mail: users-help@felix.apache.org