users@jersey.java.net

[Jersey] Re: posting or putting an object

From: Martin Matula <martin.matula_at_oracle.com>
Date: Thu, 15 Sep 2011 14:01:06 +0200

Also, do you see any exception in the server log?

On 15.9.2011 13:32, Marek Potociar wrote:
> Are you sure your Resource is running? Can you access the value of RamqBridgeClientProperties.RAMQ_RWS_DISPENSERINFO_URL
> from browser?
>
> Marek
>
> On 09/14/2011 05:40 PM, John Okrasa wrote:
>> Hello is there a way of passing an object (which contains a list) as an input to a Jersey WS
>>
>>
>>
>> //_at_POST
>>
>> //_at_Produces(value = "application/xml")
>>
>> @POST
>>
>> @Consumes(value = "application/xml")
>>
>> @Produces(value = "application/xml")
>>
>> public CPC3Output lookupDispenserInfo(CPC3Input cpc3Input) {
>>
>>
>>
>> //inject remote services
>>
>> ServiceInjector.injectServicesToTarget(this);
>>
>>
>>
>> //open a session in database to link transaction log ot modifications
>>
>> RamqSession001Ouput session = ramqSession001Service.createAuthenticationSession();
>>
>>
>>
>> cpc3Input.setAuthenticationSessionId(session.getAthenticationSessionId());
>>
>> cpc3Input.setLogicalSessionId(session.getLogicalSessionId());
>>
>> CPC3Output cpc3Output = cpc3DispenserInfoService.doLookupDispenserInfo(cpc3Input);
>>
>>
>>
>> //close the session in database
>>
>> ramqSession001Service.closeAuthenticationSession(session.getLogicalSessionId());
>>
>>
>>
>> return cpc3Output;
>>
>> }
>>
>>
>>
>> --------------------------------------------------------------------------------------------------------------------------------------------
>>
>>
>>
>> public static CPC3Output lookupDispenserInfo(CPC3Input cpc3Input) {
>>
>>
>>
>> //LOG.info("Calling RAMQ deconsent with: PHYSCODE={} | NAM={} | DECONSENT_MODE={}", new Object[]{ physcode,
>> patientNam, deconsentMode });
>>
>>
>>
>> //assume failure
>>
>> CPC3Output cpc3Output = new CPC3Output();
>>
>> cpc3Output.setSuccess(false);
>>
>>
>>
>> try {
>>
>> WebResource resource = Client.create().resource(RamqBridgeClientProperties.RAMQ_RWS_DISPENSERINFO_URL);
>>
>> resource.type(MediaType.APPLICATION_XML).accept(MediaType.APPLICATION_XML);
>>
>> resource.post(cpc3Input);
>>
>> //*
>>
>> //TODO: find a way to pass CPC3Input to the WebService
>>
>> cpc3Output = resource.get(CPC3Output.class);
>>
>>
>>
>> // ClientResponse.Status status = response.getClientResponseStatus();
>>
>> // if (status.equals(ClientResponse.Status.OK)) {
>>
>> // cpc3Output = response.getEntity(new GenericType<CPC3Output>() {});
>>
>> // //LOG.debug("Received {} consent success flag from RAMQ web service", cpc3Output.getSuccess(),
>> response.getClientResponseStatus().getStatusCode());
>>
>> // } else {
>>
>> // //LOG.warn("RAMQ web service returned status {} - {}", status.getStatusCode(), status.getReasonPhrase());
>>
>> // }
>>
>> // cpc3Output.setSuccess(true);
>>
>> //*/
>>
>> } catch (ClientHandlerException ex) {
>>
>> LOG.error("Failed to lookup dispenser information", ex);
>>
>> }
>>
>>
>>
>> return cpc3Output;
>>
>>
>>
>> results in….
>>
>>
>>
>> *com.sun.jersey.api.client.**UniformInterfaceException:*POST http://localhost:6080/ramq/ramq-ws/dispenserInfo returned a
>> *response status of 500*
>>
>>
>>
>>
>>
>> I’malsotrying what’s described in Example 4.6 in Section 4.3 of the Jersey 1.9 User guide…
>>
>>
>>
>> //JAXBElement<CPC3Input> JAXBin = new JAXBElement(new QName("/dispenserInfo"),CPC3Input.class,cpc3Input);
>>
>> JAXBElement<CPC3Input> JAXBin = new JAXBElement(new QName("licenseNo"),CPC3Input.class,cpc3Input);
>>
>> CPC3Output cpc3Output = cpc3DispenserInfoService.doLookupDispenserInfo(JAXBin);
>>
>>
>>
>> Which is to post a JAXBElement<MyObj> ..
>>
>>
>>
>> This is not working…. It gives error..
>>
>>
>>
>> SEVERE: Failed to lookup dispenser information
>>
>> com.sun.jersey.api.client.ClientHandlerException: javax.ws.rs.WebApplicationException: javax.xml.bind.MarshalException
>>
>> at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1027)
>>
>> at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:137)
>>
>> at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:121)
>>
>> at org.testng.TestRunner.runWorkers(TestRunner.java:1030)
>>
>> at org.testng.TestRunner.privateRun(TestRunner.java:709)
>>
>> at org.testng.TestRunner.run(TestRunner.java:579)
>>
>> at org.testng.SuiteRunner.runTest(SuiteRunner.java:331)
>>
>> at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:326)
>>
>> at org.testng.SuiteRunner.privateRun(SuiteRunner.java:288)
>>
>> at org.testng.SuiteRunner.run(SuiteRunner.java:193)
>>
>> at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:910)
>>
>> at org.testng.TestNG.runSuitesLocally(TestNG.java:879)
>>
>> at org.testng.TestNG.run(TestNG.java:787)
>>
>> at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:75)
>>
>> at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:92)
>>
>> Caused by: javax.ws.rs.WebApplicationException: javax.xml.bind.MarshalException
>>
>> - with linked exception:
>>
>> [java.net.ConnectException: Connection refused: connect]
>>
>> at
>> com.sun.jersey.core.provider.jaxb.AbstractJAXBElementProvider.writeTo(AbstractJAXBElementProvider.java:136)
>>
>> at
>> com.sun.jersey.core.provider.jaxb.AbstractJAXBElementProvider.writeTo(AbstractJAXBElementProvider.java:79)
>>
>> at com.sun.jersey.api.client.RequestWriter.writeRequestEntity(RequestWriter.java:311)
>>
>> at
>> com.sun.jersey.client.urlconnection.URLConnectionClientHandler._invoke(URLConnectionClientHandler.java:181)
>>
>> at
>> com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:129)
>>
>> ... 27 more
>>
>> Caused by: javax.xml.bind.MarshalException
>>
>> - with linked exception:
>>
>> [java.net.ConnectException: Connection refused: connect]
>>
>> at com.sun.xml.internal.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:319)
>>
>> at com.sun.xml.internal.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java:243)
>>
>> at javax.xml.bind.helpers.AbstractMarshallerImpl.marshal(AbstractMarshallerImpl.java:74)
>>
>> at com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider.writeTo(XMLJAXBElementProvider.java:118)
>>
>> at
>> com.sun.jersey.core.provider.jaxb.AbstractJAXBElementProvider.writeTo(AbstractJAXBElementProvider.java:134)
>>
>> ... 31 more
>>
>> Caused by: java.net.ConnectException: Connection refused: connect
>>
>> at java.net.PlainSocketImpl.socketConnect(Native Method)
>>
>> at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
>>
>> at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
>>
>> at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
>>
>> at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
>>
>> at java.net.Socket.connect(Socket.java:529)
>>
>> at java.net.Socket.connect(Socket.java:478)
>>
>> at sun.net.NetworkClient.doConnect(NetworkClient.java:163)
>>
>> at sun.net.www.http.HttpClient.openServer(HttpClient.java:394)
>>
>> at sun.net.www.http.HttpClient.openServer(HttpClient.java:529)
>>
>> at sun.net.www.http.HttpClient.<init>(HttpClient.java:233)
>>
>> at sun.net.www.http.HttpClient.New(HttpClient.java:306)
>>
>> at sun.net.www.http.HttpClient.New(HttpClient.java:323)
>>
>> at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:970)
>>
>> at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:911)
>>
>> at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:836)
>>
>> at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1014)
>>
>> at
>> com.sun.jersey.client.urlconnection.URLConnectionClientHandler$1$1.getOutputStream(URLConnectionClientHandler.java:202)
>>
>> at com.sun.jersey.api.client.CommittingOutputStream.commitWrite(CommittingOutputStream.java:117)
>>
>> at com.sun.jersey.api.client.CommittingOutputStream.write(CommittingOutputStream.java:89)
>>
>> at com.sun.xml.internal.bind.v2.runtime.output.UTF8XmlOutput.flushBuffer(UTF8XmlOutput.java:390)
>>
>> at com.sun.xml.internal.bind.v2.runtime.output.UTF8XmlOutput.endDocument(UTF8XmlOutput.java:121)
>>
>> at com.sun.xml.internal.bind.v2.runtime.XMLSerializer.endDocument(XMLSerializer.java:820)
>>
>> at com.sun.xml.internal.bind.v2.runtime.MarshallerImpl.postwrite(MarshallerImpl.java:368)
>>
>> at com.sun.xml.internal.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:315)
>>
>> ... 35 more
>>
>> *From:*John Okrasa
>> *Sent:* Sunday, September 11, 2011 9:57 PM
>> *To:* Jonathan Richard
>> *Subject:* CPC3 passing object
>>
>>
>>
>> Good morning Jonathan,
>>
>>
>>
>> Hope you had a good weekend.
>>
>>
>>
>> I guess you know the WS will accept an object… so I am trying..
>>
>>
>>
>> //_at_POST
>>
>> //_at_Produces(value = "application/xml")
>>
>> @POST
>>
>> @Consumes(value = "application/xml")
>>
>> @Produces(value = "application/xml")
>>
>> public CPC3Output lookupDispenserInfo(CPC3Input cpc3Input) {
>>
>>
>>
>> //inject remote services
>>
>> ServiceInjector.injectServicesToTarget(this);
>>
>>
>>
>> //open a session in database to link transaction log ot modifications
>>
>> RamqSession001Ouput session = ramqSession001Service.createAuthenticationSession();
>>
>>
>>
>> cpc3Input.setAuthenticationSessionId(session.getAthenticationSessionId());
>>
>> cpc3Input.setLogicalSessionId(session.getLogicalSessionId());
>>
>> CPC3Output cpc3Output = cpc3DispenserInfoService.doLookupDispenserInfo(cpc3Input);
>>
>>
>>
>> //close the session in database
>>
>> ramqSession001Service.closeAuthenticationSession(session.getLogicalSessionId());
>>
>>
>>
>> return cpc3Output;
>>
>> }
>>
>>
>>
>> --------------------------------------------------------------------------------------------------------------------------------------------
>>
>>
>>
>> public static CPC3Output lookupDispenserInfo(CPC3Input cpc3Input) {
>>
>>
>>
>> //LOG.info("Calling RAMQ deconsent with: PHYSCODE={} | NAM={} | DECONSENT_MODE={}", new Object[]{ physcode,
>> patientNam, deconsentMode });
>>
>>
>>
>> //assume failure
>>
>> CPC3Output cpc3Output = new CPC3Output();
>>
>> cpc3Output.setSuccess(false);
>>
>>
>>
>> try {
>>
>> WebResource resource = Client.create().resource(RamqBridgeClientProperties.RAMQ_RWS_DISPENSERINFO_URL);
>>
>> resource.type(MediaType.APPLICATION_XML).accept(MediaType.APPLICATION_XML);
>>
>> resource.post(cpc3Input);
>>
>> //*
>>
>> //TODO: find a way to pass CPC3Input to the WebService
>>
>> cpc3Output = resource.get(CPC3Output.class);
>>
>>
>>
>> // ClientResponse.Status status = response.getClientResponseStatus();
>>
>> // if (status.equals(ClientResponse.Status.OK)) {
>>
>> // cpc3Output = response.getEntity(new GenericType<CPC3Output>() {});
>>
>> // //LOG.debug("Received {} consent success flag from RAMQ web service", cpc3Output.getSuccess(),
>> response.getClientResponseStatus().getStatusCode());
>>
>> // } else {
>>
>> // //LOG.warn("RAMQ web service returned status {} - {}", status.getStatusCode(), status.getReasonPhrase());
>>
>> // }
>>
>> // cpc3Output.setSuccess(true);
>>
>> //*/
>>
>> } catch (ClientHandlerException ex) {
>>
>> LOG.error("Failed to lookup dispenser information", ex);
>>
>> }
>>
>>
>>
>> return cpc3Output;
>>
>>
>>
>> results in….
>>
>>
>>
>> *com.sun.jersey.api.client.**UniformInterfaceException:*POST http://localhost:6080/ramq/ramq-ws/dispenserInfo returned a
>> *response status of 500*
>>
>> * *
>>
>> John Okrasa
>>
>> Java Developer
>>
>> Clinical and Health Informatics Research Group
>>
>> 1140 Pine Ave. West Montreal QC H3A 1A3
>>
>> TEL: 514-934-1934, x32975
>>
>> FAX: 514-843-1551
>>
>> john.okrasa_at_mail.mcgill.ca<mailto:john.okrasa_at_mail.mcgill.ca>
>>
>>
>>