users@jersey.java.net

Re: [Jersey] I can't get a POST message to work

From: Jakub Podlesak <Jakub.Podlesak_at_Sun.COM>
Date: Tue, 27 Jan 2009 10:11:49 +0100

Jeff, please see inline...

On Mon, Jan 26, 2009 at 11:58:43AM -0700, Jeff Schmidt wrote:
> Paul, Jakub:
>
> Before I submit an issue, I did a little more digging into Netbeans and saw
> a couple of interesting things. First, in Tools->Plugins->Installed, for
> "RESTful Web Services" it says Version 1.0.2:


Yes, i see 1.0.2 as well in my NB instanceC, but....

>
>
>
>
> Does this indicate the version of the plug-in itself, or the version of
> Jersey it provides? If the latter, then I guess 1.0.2 will work for me.

...i think it indicates the version of plugin. If you try:

% unzip -p opt/netbeans-6.5/enterprise5/modules/ext/rest/jersey.jar META-INF/MANIFEST.MF | grep Implementation-Version

it should give you the jersey version number. For me it returns: 1.0

As a quick dirty hack, you can try to replace the jersey.jar and jersey-spring.jar
in your NB install dir with jersey-bundle-${your-preferred-version}.jar and
jersey-spring-${your-preferred-version}.jar from our maven repository (you will
need to rename the files appropriately).

But to make sure the issue is resolved, i would appreciate you file a bug
against NB. Please let me know, if you do not have time for it, and i will do it by myself.

Thanks,

~Jakub

> When I remove the 1.0.1 based library I created and simply add the plugin's
> Jersey 1.0 library, it does not give any indication these are 1.0.2
> libraries. I guess Netbeans shows only the major.minor revision numbers. Do
> I in realty have the 1.0.2 jars? I'm not sure what changed from 1.0.1 to
> easily verify.
>
>
>
> Note the separate jersey-multipart-1.0.2-SNAPSHOT.jar. When I had all of
> the 1.0.1 files associated with this project, I had also added
> jersey-multippart-1.0.1.jar and things seemed fine. When I removed the
> 1.0.1 libraries and went with the REST plugins libraries, I got the
> following exception when starting up GlassFish V2. I thought that if plugin
> does provide 1.0.2 libraries, then perhaps I need jersey-multipart-1.0.2 as
> well. But, that did not help.
>
> Scanning for root resource and provider classes in the paths:
>
> /Users/jas/netbeans/jax-rs-1.0.1-test/Jersey-1.0.1-test/build/web/WEB-INF/lib
>
> /Users/jas/netbeans/jax-rs-1.0.1-test/Jersey-1.0.1-test/build/web/WEB-INF/classes
> Root resource classes found:
> class com.ingenuity.ipaws.rest.resource.AnalysesResource
> Provider classes found:
> class com.sun.jersey.multipart.impl.MultiPartWriter
> class com.sun.jersey.multipart.impl.MultiPartReader
> java.lang.reflect.InvocationTargetException
> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
> Method)
> at
> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
> at
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
> at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
> at
> com.sun.jersey.impl.application.WebApplicationImpl$DefaultComponentProvider.getInstance(WebApplicationImpl.java:437)
> at
> com.sun.jersey.impl.application.ComponentProviderCache.getComponent(ComponentProviderCache.java:187)
> at
> com.sun.jersey.impl.application.ComponentProviderCache.getProvidersAndServices(ComponentProviderCache.java:122)
> at
> com.sun.jersey.impl.application.MessageBodyFactory.getProviderMap(MessageBodyFactory.java:133)
> at
> com.sun.jersey.impl.application.MessageBodyFactory.initReaders(MessageBodyFactory.java:107)
> at
> com.sun.jersey.impl.application.MessageBodyFactory.init(MessageBodyFactory.java:102)
> at
> com.sun.jersey.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:642)
> at
> com.sun.jersey.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:487)
> at
> com.sun.jersey.spi.container.servlet.ServletContainer.initiate(ServletContainer.java:622)
> at
> com.sun.jersey.spi.container.servlet.ServletContainer.load(ServletContainer.java:538)
> at
> com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:197)
> at
> org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1178)
> at
> org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1007)
> at
> org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4808)
> at
> org.apache.catalina.core.StandardContext.start(StandardContext.java:5196)
> at com.sun.enterprise.web.WebModule.start(WebModule.java:326)
> at
> com.sun.enterprise.web.LifecycleStarter.doRun(LifecycleStarter.java:58)
> at
> com.sun.appserv.management.util.misc.RunnableBase.runSync(RunnableBase.java:304)
> at
> com.sun.appserv.management.util.misc.RunnableBase.run(RunnableBase.java:341)
> at
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:417)
> at
> java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269)
> at java.util.concurrent.FutureTask.run(FutureTask.java:123)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
> at java.lang.Thread.run(Thread.java:613)
> Caused by: java.lang.IllegalArgumentException: The MultiPartConfig instance
> we expected is not present. Have you registered the
> MultiPartConfigProvider class?
> at
> com.sun.jersey.multipart.impl.MultiPartReader.<init>(MultiPartReader.java:83)
> ... 29 more
> null
> SMGT0007: Self Management Rules service is enabled
>
> I'll keep looking into that. But, if I'm mistaken about the proper Jersey
> version in the current Netbeans plugin, please let me know.
>
> Cheers,
>
> Jeff
>
> On Jan 26, 2009, at 2:49 AM, Paul Sandoz wrote:
>
>>
>> On Jan 26, 2009, at 10:32 AM, Jakub Podlesak wrote:
>>
>>>
>>> Hi Jeff,
>>>
>>> would you be so kind and enter an issue at netbeans issuezilla [1],
>>> with [rest] as a subcomponent. If netbeans plugin adds the other jersey
>>> jars, it definitely seems as a bug to me.
>>>
>>
>> Yes, i agree.
>>
>> Paul.
>>
>>> ~Jakub
>>>
>>> [1]http://www.netbeans.org/issues/enter_bug.cgi?component=websvc
>>>
>>> On Fri, Jan 23, 2009 at 09:15:30AM -0700, Jeff Schmidt wrote:
>>>> Hi Paul:
>>>>
>>>> Thanks a lot for your suggestions. Trying this process yet again from
>>>> scratch, I was able to create the Netbeans library with the 1.0.1 jars
>>>> and
>>>> actually got the project to run. :) Yeah. Unfortunately, this only
>>>> partially works with the Netbeans/JAX-RS integration. That is, if I go
>>>> and
>>>> create a new resource using the Container/Item pattern, then all the 1.0
>>>> jars get added to the project. Then I end up with both 1.0 and 1.0.1.
>>>> Perhaps I did not delete all of those 1.0 jars last time?
>>>>
>>>> If I remove all of the 1.0 jars, then the project will run again. So, I
>>>> guess if I make use of the Netbeans 6.5 JAX-RS integration features, if
>>>> I
>>>> then go and delete the added 1.0 libraries, this might work out fine,
>>>> though kind of clumsily.
>>>>
>>>> I realize this is not a Netbeans forum, but I figure there are a lot of
>>>> Netbeans users out there working with JAX-RS/Jersey projects,
>>>> encountering
>>>> the same issues. I can live with the current arrangement, but I'm just
>>>> curious how Netbeans will adopt new Jersey releases in the future. Will
>>>> this be via the Netbeans update process? I won't need to typically be on
>>>> the bleeding edge of Jersey releases, but even then it does not look
>>>> like
>>>> official Netbeans will be keeping up.
>>>>
>>>> Thanks!
>>>>
>>>> Jeff
>>>>
>>>> On Jan 23, 2009, at 6:00 AM, Paul Sandoz wrote:
>>>>
>>>>>
>>>>> On Jan 23, 2009, at 1:55 PM, Paul Sandoz wrote:
>>>>>
>>>>>>
>>>>>> On Jan 22, 2009, at 3:35 PM, Jeff Schmidt wrote:
>>>>>>
>>>>>>> Hi Jakub:
>>>>>>>
>>>>>>> I too am having the problem with the InstantiationException and
>>>>>>> JSONListElementProvider when I try to use the Jersey 1.0.1 jars in
>>>>>>> Netbeans 6.5. I really need to start working with Craig's multipart
>>>>>>> API
>>>>>>> and I see it is included in 1.0.1. Jersey 1.0 is what is available in
>>>>>>> Netbeans 6.5. I tried to update Jersey by creating a new library in
>>>>>>> Netbeans and included the following jar files, which I basically got
>>>>>>> from the Jersey 1.0.1 dependencies page.
>>>>>>>
>>>>>>> ./asm-3.1.jar
>>>>>>> ./grizzly-servlet-webserver-1.8.6.3.jar
>>>>>>> ./http-20070405.jar
>>>>>>> ./jaxb-api-2.1.jar
>>>>>>> ./jaxb-impl-2.1.jar
>>>>>>> ./jaxb-xjc.jar
>>>>>>> ./jdom-1.0.jar
>>>>>>> ./jersey-atom-1.0.1.jar
>>>>>>> ./jersey-core-1.0.1.jar
>>>>>>> ./jersey-fastinfoset-1.0.1.jar
>>>>>>> ./jersey-json-1.0.1.jar
>>>>>>> ./jersey-server-1.0.1-javadoc.jar
>>>>>>> ./jersey-server-1.0.1.jar
>>>>>>> ./jettison-1.0.1.jar
>>>>>>> ./jsr173-api-1.0.jar
>>>>>>> ./jsr311-api-1.0.jar
>>>>>>> ./rome-0.9.jar
>>>>>>> ./stax-api-1.0-2.jar
>>>>>>>
>>>>>>> When starting up the app server (Tomcat or Glassfish) I get several:
>>>>>>>
>>>>>>> The provider class, class
>>>>>>> com.sun.jersey.impl.provider.entity.JSONListElementProvider, could
>>>>>>> not
>>>>>>> be instantiated
>>>>>> ^
>>>>>> |
>>>>>> This is definitely a 1.0 class because we
>>>>>> changed the package name to include
>>>>>> json after jersey.
>>>>>>
>>>>>> So, this confirms what i thought in my previous email: for some reason
>>>>>> there are still Jersey 1.0 jars hanging around in the class path.
>>>>>>
>>>>>
>>>>> Grrr... sigh... tired today... what i wrote above is not correct (that
>>>>> package name changed in 1.0.2), but there is still some issue related
>>>>> to
>>>>> this in the difference between 1.0 and 1.0.1, namely Jersey 1.0 seems
>>>>> to
>>>>> be still around and is trying to use jersey 1.0.1.
>>>>>
>>>>> Paul.
>>>>>
>>>>>
>>>>>> Paul.
>>>>>>
>>>>>>>
>>>>>>> java.lang.InstantiationException:
>>>>>>> com.sun.jersey.impl.provider.entity.JSONListElementProvider
>>>>>>>
>>>>>>> Browsing jersey-json-1.0.1.jar within Netbeans, I can see that class
>>>>>>> is
>>>>>>> abstract.
>>>>>>>
>>>>>>> When I tried the sample customer DB app as you suggested below, it
>>>>>>> worked just fine using the stock Jersey 1.0 library.
>>>>>>>
>>>>>>> What is the proper combination of jar files one uses to create a
>>>>>>> library
>>>>>>> in Netbeans 6.5 that will allow me to use the IDE to develop using
>>>>>>> Jersey 1.0.1?
>>>>>>>
>>>>>>> Thanks!
>>>>>>>
>>>>>>> Jeff
>>>>>>>
>>>>>>>
>>>>>>> On Jan 19, 2009, at 8:38 AM, Jakub Podlesak wrote:
>>>>>>>
>>>>>>>>
>>>>>>>> Hello Eric,
>>>>>>>>
>>>>>>>> On Sun, Jan 18, 2009 at 10:12:55AM -0600, Marsh Eric wrote:
>>>>>>>>> Hello,
>>>>>>>>>
>>>>>>>>> I'm developing an iPhone application that needs to pass information
>>>>>>>>> between
>>>>>>>>> the iPhone and a remote database. Using web services seemed to be a
>>>>>>>>> good
>>>>>>>>> strategy so I downloaded the latest version of Netbeans, spent a
>>>>>>>>> day
>>>>>>>>> or two
>>>>>>>>> reading and working through the web services examples. Doing some
>>>>>>>>> web
>>>>>>>>> searches I found that most iPhone developers are using JSON so I
>>>>>>>>> downloaded
>>>>>>>>> an iPhone JSON library and went to work at developing a
>>>>>>>>> communications
>>>>>>>>> channel between the remote device and the database.
>>>>>>>>>
>>>>>>>>> I don't know if it makes any difference but I'm developing on a
>>>>>>>>> Mac.
>>>>>>>>>
>>>>>>>>> First of all, when I tried to deploy I was getting some errors
>>>>>>>>> related
>>>>>>>>> to
>>>>>>>>> JSON. They are:
>>>>>>>>>
>>>>>>>>> SEVERE: The provider class, class
>>>>>>>>> com.sun.jersey.impl.provider.entity.JSONJAXBElementProvider, could
>>>>>>>>> not
>>>>>>>>> be
>>>>>>>>> instantiated
>>>>>>>>> SEVERE: The provider class, class
>>>>>>>>> com.sun.jersey.impl.provider.entity.JSONListElementProvider, could
>>>>>>>>> not
>>>>>>>>> be
>>>>>>>>> instantiated
>>>>>>>>> SEVERE: The provider class, class
>>>>>>>>> com.sun.jersey.impl.provider.entity.JSONRootElementProvider, could
>>>>>>>>> not
>>>>>>>>> be
>>>>>>>>> instantiated
>>>>>>>>>
>>>>>>>>> I thought that I'd go back and look at those problems later as the
>>>>>>>>> app
>>>>>>>>> did
>>>>>>>>> seem to deploy even with the errors.
>>>>>>>>
>>>>>>>> I would recommend you to try resolve the above errors in the first
>>>>>>>> place
>>>>>>>> as it seems something is wrong with your configuration.
>>>>>>>> Are you using the latest NetBeans 6.5? If so,
>>>>>>>> could you try to create a new project with:
>>>>>>>> [New Project]->[Samples]->[WebServices]->[Customer Database
>>>>>>>> (RESTful)]
>>>>>>>> then try to deploy. Same errors?
>>>>>>>> Then please try to submit a new bug report against NetBeans RESTful
>>>>>>>> WS
>>>>>>>> plugin at [1]
>>>>>>>> Another thing you may try is to run your NetBeans with a fresh
>>>>>>>> userdir.
>>>>>>>> Then you need to use --userdir rest-app-nbdir command line option.
>>>>>>>>
>>>>>>>>
>>>>>>>>>
>>>>>>>>> It wasn't too tough getting the database to talk to the iPhone.
>>>>>>>>> However
>>>>>>>>> I've spent something like a week and a half trying to get the
>>>>>>>>> communications to work going the other way. Initially when I was
>>>>>>>>> getting
>>>>>>>>> errors and exceptions I thought that my problem was that I simply
>>>>>>>>> didn't
>>>>>>>>> understand the JSON protocol. Consequently I stopped trying to get
>>>>>>>>> the
>>>>>>>>> iPhone to talk to the web services and started to experiment with
>>>>>>>>> the
>>>>>>>>> netbeans "Test RESTful web services" web interface. I would do a
>>>>>>>>> get
>>>>>>>>> to
>>>>>>>>> grab some data from my database, tweak the results and try to POST
>>>>>>>>> them
>>>>>>>>> back to the database. I could never get this to work. I had a
>>>>>>>>> number
>>>>>>>>> of
>>>>>>>>
>>>>>>>> The simplest test scenario to try out here is to
>>>>>>>>
>>>>>>>> - GET some data from a particular containee resource
>>>>>>>> - POST the very same *unchanged* data to the corresponding container
>>>>>>>> resource
>>>>>>>>
>>>>>>>> Then, you should get something like
>>>>>>>> Entity already exists exception (coming from db layer)
>>>>>>>> Which in fact means, you entity gets unmarshalled all right.
>>>>>>>> Could you please try out something similar (without touching the
>>>>>>>> data)
>>>>>>>> at your application?
>>>>>>>>
>>>>>>>>
>>>>>>>>> returned error codes depending on what I would try to POST but I
>>>>>>>>> finally
>>>>>>>>> focused on the fact that I was getting messages similar to the
>>>>>>>>> following:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> javax.ws.rs.WebApplicationException:
>>>>>>>>> javax.xml.bind.UnmarshalException
>>>>>>>>> -
>>>>>>>>> with linked exception: [org.xml.sax.SAXParseException: Content is
>>>>>>>>> not
>>>>>>>>> allowed in prolog.] at
>>>>>>>>> converter.UriResolver.resolve(UriResolver.java:81)
>>>>>>>>>
>>>>>>>>> I've been doing some reading and it appears that in Jersey JSON is
>>>>>>>>> layered
>>>>>>>>> over XML. Since this exception appears to be coming from the XML
>>>>>>>>> layer
>>>>>>>>> it
>>>>>>>>> looks like I would have to step through the Jersey source to figure
>>>>>>>>> out
>>>>>>>>> what's going on. I suspect that the problem is related to the
>>>>>>>>> exceptions
>>>>>>>>> that were happening on deployment that I cited earlier.
>>>>>>>>>
>>>>>>>>
>>>>>>>> I suspect that is the case. If the customer db application works for
>>>>>>>> you,
>>>>>>>> you might want to check, you web app uses the same jersey related
>>>>>>>> libraries.
>>>>>>>> (Please make sure you do not mix jersey jar versions)
>>>>>>>>
>>>>>>>> If none of the above helps, would you be able to send out your
>>>>>>>> project
>>>>>>>> files so that i could have a closer look?
>>>>>>>>
>>>>>>>> ~Jakub
>>>>>>>>
>>>>>>>> [1]http://www.netbeans.org/community/issues.html
>>>>>>>>
>>>>>>>>> I downloaded the source so that I could build and debug in the
>>>>>>>>> Jersey
>>>>>>>>> and
>>>>>>>>> Grizzly layers. This took a couple of hours. To my surprise there
>>>>>>>>> was
>>>>>>>>> a
>>>>>>>>> couple of places where the source wouldn't build as downloaded. One
>>>>>>>>> is
>>>>>>>>> in
>>>>>>>>> ContainerResponse.java where the compiler complained that at line
>>>>>>>>> 216
>>>>>>>>> it
>>>>>>>>> couldn't find getMessageBodyWriterMediaTypes. Another problem is at
>>>>>>>>> line
>>>>>>>>> 292 in BasicValidator.java where it couldn't find
>>>>>>>>> ERROR_SUBRES_LOC_HAS_ENTITY_PARAM. I did some quick hacks just to
>>>>>>>>> get
>>>>>>>>> the
>>>>>>>>> application to build. However it wouldn't deploy and at that point
>>>>>>>>> I
>>>>>>>>> decided that I'd just spent too much time on this and decided to
>>>>>>>>> yell
>>>>>>>>> for
>>>>>>>>> help.
>>>>>>>>>
>>>>>>>>> I'd really like to be able to use Glassfish, Netbeans and Jersey
>>>>>>>>> but I
>>>>>>>>> really seem to be stuck. If I can't get this to fly I may have to
>>>>>>>>> backtrack
>>>>>>>>> and do something entirely different. It doesn't appear that I can
>>>>>>>>> do a
>>>>>>>>> remote database connection from the iPhone so web services looks
>>>>>>>>> like
>>>>>>>>> the
>>>>>>>>> best solution. The problem appears to be at the server end, not the
>>>>>>>>> iPhone
>>>>>>>>> end anyway. I'm really kind of surprised that I've had so much
>>>>>>>>> trouble.
>>>>>>>>> Regardless, I need to break through this roadblock and get this app
>>>>>>>>> done.
>>>>>>>>>
>>>>>>>>> Suggestions or help anyone?
>>>>>>>>
>>>>>>>> ---------------------------------------------------------------------
>>>>>>>> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
>>>>>>>> For additional commands, e-mail: users-help_at_jersey.dev.java.net
>>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Jeff Schmidt
>>>>>>> 535 Consulting
>>>>>>> jas_at_535consulting.com
>>>>>>> (408) 205-7697
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
>>> For additional commands, e-mail: users-help_at_jersey.dev.java.net
>>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
>> For additional commands, e-mail: users-help_at_jersey.dev.java.net
>>
>
>
>
> --
> Jeff Schmidt
> 535 Consulting
> jas_at_535consulting.com
> (408) 205-7697
>
>
>
>