cxf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Daniel Kulp <dk...@apache.org>
Subject Re: woodstox mandatory?
Date Tue, 02 Apr 2013 15:10:12 GMT

On Apr 2, 2013, at 11:06 AM, Daniel Kulp <dkulp@apache.org> wrote:

> 
> On Apr 2, 2013, at 10:44 AM, Freeman Fang <freeman.fang@gmail.com> wrote:
> 
>> As we don't have dependency="true" for woodstox bundles in cxf features.xml, so I
think even cxf-api optionally import woodstox package, the woodstox bundle could get installed
anyway
> 
> Thats IF you are using Karaf and the Karaf features.xml.    If you are in a different
OSGi environment, that  wouldn't apply.  Even if you use Karaf, if you are manually installing
 bundles and not using the features (likely pretty rare), you'd still have an issue.

That said, I guess if it is marked optional in the manifest, you would just get an exception
at runtime and you could install the woodstox bundle and refresh cxf-api.     I generally
dislike finding out about these things at runtime though.   :-(

Dan



> 
> Dan
> 
> 
> 
>> -------------
>> Freeman(Yue) Fang
>> 
>> Red Hat, Inc. 
>> FuseSource is now part of Red Hat
>> Web: http://fusesource.com | http://www.redhat.com/
>> Twitter: freemanfang
>> Blog: http://freemanfang.blogspot.com
>> http://blog.sina.com.cn/u/1473905042
>> weibo: @Freeman小屋
>> 
>> On 2013-4-2, at 下午10:21, Aki Yoshida wrote:
>> 
>>> Hi Dan,
>>> I thought the allowInsecureParser option was intended to be used also in osgi.
>>> 
>>> aki
>>> 
>>> 2013/4/2 Daniel Kulp <dkulp@apache.org>:
>>>> 
>>>> On Apr 2, 2013, at 5:25 AM, Aki Yoshida <elakito@gmail.com> wrote:
>>>> 
>>>>> that generated a required woodstox import in cxf-api's manifest. That
>>>>> needs to be changed to optional as well.
>>>> 
>>>> No, I explicitly did not mark it optional to make sure the OBR would pull
it in.
>>>> 
>>>> Dan
>>>> 
>>>> 
>>>>> 2013/4/2 Sergey Beryozkin <sberyozkin@gmail.com>:
>>>>>> On 02/04/13 11:01, Romain Manni-Bucau wrote:
>>>>>>> 
>>>>>>> Hi Sergey,
>>>>>>> 
>>>>>>> tomee doesn't bring it by default because it is too fatty and
not always
>>>>>>> mandatory (same reason we don't bring jackson by default).
>>>>>>> 
>>>>>>> i think the issue is not with close() but with the loadclass
of staxutils
>>>>>>> which imports woodstox (i run with java 7)
>>>>>> 
>>>>>> Yep, see it now... I guess we'll need to externalize a bit the explicit
>>>>>> loading of the Woodstox factory or load it reflectively.
>>>>>> Dan, what would be your preference ?
>>>>>> 
>>>>>> Sergey
>>>>>> 
>>>>>> 
>>>>>>> 
>>>>>>> *Romain Manni-Bucau*
>>>>>>> *Twitter: @rmannibucau<https://twitter.com/rmannibucau>*
>>>>>>> *Blog:
>>>>>>> **http://rmannibucau.wordpress.com/*<http://rmannibucau.wordpress.com/>
>>>>>>> *LinkedIn: **http://fr.linkedin.com/in/rmannibucau*
>>>>>>> *Github: https://github.com/rmannibucau*
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> 2013/4/2 Sergey Beryozkin<sberyozkin@gmail.com>
>>>>>>> 
>>>>>>>> Hi Romain
>>>>>>>> 
>>>>>>>> The latest Woodstox has the superior security characteristics
with regard
>>>>>>>> to managing large payloads, and this is why it is preferred
now,
>>>>>>>> perhaps even TomEE might 'consider' swithcing to it in the
future,
>>>>>>>> however, StaxUtils checks a system
>>>>>>>> "org.apache.cxf.stax.**allowInsecureParser"
>>>>>>>> property, in fact at the moment it is set to 'true' by default
to let
>>>>>>>> containers like TomEE continue using their parsers of choice.
>>>>>>>> 
>>>>>>>> So it appears it is a problem with StaxUtils.close...Or may
be you can
>>>>>>>> simply exclude Woodstox from the maven dependencies when
upgrading ?
>>>>>>>> 
>>>>>>>> Thanks, Sergey
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> On 02/04/13 10:42, Romain Manni-Bucau wrote:
>>>>>>>> 
>>>>>>>>> when unmarshalling
>>>>>>>>> (org.apache.cxf.jaxrs.**provider.JAXBElementProvider.**readFrom)
the
>>>>>>>>> reader is
>>>>>>>>> closed thanks to StaxUtils.close(reader); call
>>>>>>>>> 
>>>>>>>>> and it triggers:
>>>>>>>>> 
>>>>>>>>> org.apache.cxf.jaxrs.client.**ClientWebApplicationException:
>>>>>>>>> java.lang.**NoClassDefFoundError: com/ctc/wstx/stax/**WstxInputFactory
>>>>>>>>> at org.apache.cxf.jaxrs.client.**WebClient.handleResponse(**
>>>>>>>>> WebClient.java:871)
>>>>>>>>> at
>>>>>>>>> org.apache.cxf.jaxrs.client.**WebClient.doChainedInvocation(**
>>>>>>>>> WebClient.java:841)
>>>>>>>>> at org.apache.cxf.jaxrs.client.**WebClient.doInvoke(WebClient.**
>>>>>>>>> java:768)
>>>>>>>>> at
>>>>>>>>> org.apache.cxf.jaxrs.client.**WebClient.doInvoke(WebClient.**java:729)
>>>>>>>>> at
>>>>>>>>> org.apache.cxf.jaxrs.client.**WebClient.invoke(WebClient.**java:345)
>>>>>>>>> at org.apache.cxf.jaxrs.client.**WebClient.get(WebClient.java:**481)
>>>>>>>>> at
>>>>>>>>> org.superbiz.rest.**UserServiceTest.show(**UserServiceTest.java:95)
>>>>>>>>> at sun.reflect.**NativeMethodAccessorImpl.**invoke0(Native
Method)
>>>>>>>>> at
>>>>>>>>> sun.reflect.**NativeMethodAccessorImpl.**invoke(**
>>>>>>>>> NativeMethodAccessorImpl.java:**57)
>>>>>>>>> at
>>>>>>>>> sun.reflect.**DelegatingMethodAccessorImpl.**invoke(**
>>>>>>>>> DelegatingMethodAccessorImpl.**java:43)
>>>>>>>>> at
>>>>>>>>> org.junit.runners.model.**FrameworkMethod$1.**runReflectiveCall(**
>>>>>>>>> FrameworkMethod.java:45)
>>>>>>>>> at
>>>>>>>>> org.junit.internal.runners.**model.ReflectiveCallable.run(**
>>>>>>>>> ReflectiveCallable.java:15)
>>>>>>>>> at
>>>>>>>>> org.junit.runners.model.**FrameworkMethod.**invokeExplosively(**
>>>>>>>>> FrameworkMethod.java:42)
>>>>>>>>> at
>>>>>>>>> org.junit.internal.runners.**statements.InvokeMethod.**
>>>>>>>>> evaluate(InvokeMethod.java:20)
>>>>>>>>> at org.junit.runners.**ParentRunner.runLeaf(**ParentRunner.java:263)
>>>>>>>>> at
>>>>>>>>> org.junit.runners.**BlockJUnit4ClassRunner.**runChild(**
>>>>>>>>> BlockJUnit4ClassRunner.java:**68)
>>>>>>>>> at
>>>>>>>>> org.junit.runners.**BlockJUnit4ClassRunner.**runChild(**
>>>>>>>>> BlockJUnit4ClassRunner.java:**47)
>>>>>>>>> at org.junit.runners.**ParentRunner$3.run(**ParentRunner.java:231)
>>>>>>>>> at
>>>>>>>>> org.junit.runners.**ParentRunner$1.schedule(**ParentRunner.java:60)
>>>>>>>>> at org.junit.runners.**ParentRunner.runChildren(**ParentRunner.java:229)
>>>>>>>>> at
>>>>>>>>> org.junit.runners.**ParentRunner.access$000(**ParentRunner.java:50)
>>>>>>>>> at org.junit.runners.**ParentRunner$2.evaluate(**ParentRunner.java:222)
>>>>>>>>> at
>>>>>>>>> org.junit.internal.runners.**statements.RunBefores.**
>>>>>>>>> evaluate(RunBefores.java:28)
>>>>>>>>> at
>>>>>>>>> org.junit.internal.runners.**statements.RunAfters.evaluate(**
>>>>>>>>> RunAfters.java:30)
>>>>>>>>> at org.junit.runners.**ParentRunner.run(ParentRunner.**java:300)
>>>>>>>>> at org.junit.runner.JUnitCore.**run(JUnitCore.java:157)
>>>>>>>>> at
>>>>>>>>> com.intellij.junit4.**JUnit4IdeaTestRunner.**startRunnerWithArgs(**
>>>>>>>>> JUnit4IdeaTestRunner.java:77)
>>>>>>>>> at
>>>>>>>>> 
>>>>>>>>> com.intellij.rt.execution.**junit.JUnitStarter.**prepareStreamsAndStart(*
>>>>>>>>> *JUnitStarter.java:195)
>>>>>>>>> at com.intellij.rt.execution.**junit.JUnitStarter.main(**
>>>>>>>>> JUnitStarter.java:63)
>>>>>>>>> at sun.reflect.**NativeMethodAccessorImpl.**invoke0(Native
Method)
>>>>>>>>> at
>>>>>>>>> sun.reflect.**NativeMethodAccessorImpl.**invoke(**
>>>>>>>>> NativeMethodAccessorImpl.java:**57)
>>>>>>>>> at com.intellij.rt.execution.**application.AppMain.main(**
>>>>>>>>> AppMain.java:120)
>>>>>>>>> Caused by: java.lang.**NoClassDefFoundError:
>>>>>>>>> com/ctc/wstx/stax/**WstxInputFactory
>>>>>>>>> at
>>>>>>>>> org.apache.cxf.jaxrs.provider.**JAXBElementProvider.readFrom(**
>>>>>>>>> JAXBElementProvider.java:196)
>>>>>>>>> at
>>>>>>>>> org.apache.cxf.jaxrs.client.**AbstractClient.readBody(**
>>>>>>>>> AbstractClient.java:446)
>>>>>>>>> at org.apache.cxf.jaxrs.client.**WebClient.handleResponse(**
>>>>>>>>> WebClient.java:857)
>>>>>>>>> ... 34 more
>>>>>>>>> Caused by: java.lang.**ClassNotFoundException:
>>>>>>>>> com.ctc.wstx.stax.**WstxInputFactory
>>>>>>>>> at java.net.URLClassLoader$1.run(**URLClassLoader.java:366)
>>>>>>>>> at java.net.URLClassLoader$1.run(**URLClassLoader.java:355)
>>>>>>>>> at java.security.**AccessController.doPrivileged(**Native
Method)
>>>>>>>>> at java.net.URLClassLoader.**findClass(URLClassLoader.java:**354)
>>>>>>>>> at java.lang.ClassLoader.**loadClass(ClassLoader.java:**423)
>>>>>>>>> at sun.misc.Launcher$**AppClassLoader.loadClass(**Launcher.java:308)
>>>>>>>>> at java.lang.ClassLoader.**loadClass(ClassLoader.java:**356)
>>>>>>>>> ... 37 more
>>>>>>>>> 
>>>>>>>>> *Romain Manni-Bucau*
>>>>>>>>> *Twitter:
>>>>>>>>> @rmannibucau<https://twitter.**com/rmannibucau<https://twitter.com/rmannibucau>
>>>>>>>>>> 
>>>>>>>>>> *
>>>>>>>>> 
>>>>>>>>> *Blog:
>>>>>>>>> **http://rmannibucau.**wordpress.com/*<http://rmannibucau.wordpress.com/*>
>>>>>>>>> <http://**rmannibucau.wordpress.com/<http://rmannibucau.wordpress.com/>>
>>>>>>>>> *LinkedIn:
>>>>>>>>> **http://fr.linkedin.com/in/**rmannibucau*<http://fr.linkedin.com/in/rmannibucau*>
>>>>>>>>> *Github:
>>>>>>>>> https://github.com/**rmannibucau*<https://github.com/rmannibucau*>
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 2013/4/2 Freeman Fang<freeman.fang@gmail.com>
>>>>>>>>> 
>>>>>>>>> Hi,
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> I believe it's just compile time dependency, during
runtime, you still
>>>>>>>>>> can
>>>>>>>>>> use any other stax parser for now.
>>>>>>>>>> 
>>>>>>>>>> What's the error you run into?
>>>>>>>>>> -------------
>>>>>>>>>> Freeman(Yue) Fang
>>>>>>>>>> 
>>>>>>>>>> Red Hat, Inc.
>>>>>>>>>> FuseSource is now part of Red Hat
>>>>>>>>>> Web: http://fusesource.com | http://www.redhat.com/
>>>>>>>>>> Twitter: freemanfang
>>>>>>>>>> Blog:
>>>>>>>>>> http://freemanfang.blogspot.**com<http://freemanfang.blogspot.com>
>>>>>>>>>> 
>>>>>>>>>> http://blog.sina.com.cn/u/**1473905042<http://blog.sina.com.cn/u/1473905042>
>>>>>>>>>> weibo: @Freeman小屋
>>>>>>>>>> 
>>>>>>>>>> On 2013-4-2, at 下午3:19, Romain Manni-Bucau wrote:
>>>>>>>>>> 
>>>>>>>>>> Hi,
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> seems woodstox is now mandatory to use cxf (tested
with v2.6.7)
>>>>>>>>>>> because
>>>>>>>>>>> of org.apache.cxf.staxutils.**StaxUtils
>>>>>>>>>>> 
>>>>>>>>>>> is it normal?
>>>>>>>>>>> 
>>>>>>>>>>> in TomEE we were remove it by default so basically
it means we can't
>>>>>>>>>>> 
>>>>>>>>>> upgrade
>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> *Romain Manni-Bucau*
>>>>>>>>>>> *Twitter:
>>>>>>>>>>> @rmannibucau<https://twitter.**com/rmannibucau<https://twitter.com/rmannibucau>
>>>>>>>>>>>> 
>>>>>>>>>>>> *
>>>>>>>>>>> 
>>>>>>>>>>> *Blog:
>>>>>>>>>>> **http://rmannibucau.**wordpress.com/*<http://rmannibucau.wordpress.com/*>
>>>>>>>>>>> <
>>>>>>>>>>> 
>>>>>>>>>> http://rmannibucau.wordpress.**com/<http://rmannibucau.wordpress.com/>>
>>>>>>>>>> 
>>>>>>>>>>> *LinkedIn:
>>>>>>>>>>> **http://fr.linkedin.com/in/**rmannibucau*<http://fr.linkedin.com/in/rmannibucau*>
>>>>>>>>>>> *Github:
>>>>>>>>>>> https://github.com/**rmannibucau*<https://github.com/rmannibucau*>
>>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>>>> --
>>>>>>>> Sergey Beryozkin
>>>>>>>> 
>>>>>>>> Talend Community Coders
>>>>>>>> http://coders.talend.com/
>>>>>>>> 
>>>>>>>> Blog: http://sberyozkin.blogspot.com
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>> 
>>>> --
>>>> Daniel Kulp
>>>> dkulp@apache.org - http://dankulp.com/blog
>>>> Talend Community Coder - http://coders.talend.com
>>>> 
>> 
> 
> -- 
> Daniel Kulp
> dkulp@apache.org - http://dankulp.com/blog
> Talend Community Coder - http://coders.talend.com
> 

-- 
Daniel Kulp
dkulp@apache.org - http://dankulp.com/blog
Talend Community Coder - http://coders.talend.com


Mime
View raw message