users@jersey.java.net

[Jersey] Re: posting or putting an object

From: Marek Potociar <marek.potociar_at_oracle.com>
Date: Thu, 15 Sep 2011 13:32:52 +0200

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>
>
>
>