2013-05-30 64 views
0

我有一個運行Jersey Rest web服務的Glassfish 3服務器。澤西客戶端在Java Webstart上運行時不起作用

我有一個作爲客戶端運行的swing應用程序。

我可以做所有我編碼的應用程序。 (添加,刪除,編輯,查看)一切按預期工作。

我想用Java Webstart發佈swing應用程序。

在NetBeans我跑我的Webstart的申請,並得到了以下錯誤:

com.sun.jersey.api.client.ClientHandlerException: A message body reader for Java class  java.util.List, and Java type java.util.List<za.co.lunginstitute.restbeans.Patient>, and MIME media type application/json was not found 
    at com.sun.jersey.api.client.ClientResponse.getEntity(ClientResponse.java:561) 
    at com.sun.jersey.api.client.ClientResponse.getEntity(ClientResponse.java:535) 
    at za.co.lunginstitute.restclient.BaseDAO.get(BaseDAO.java:37) 
    at za.co.lunginstitute.restclient.PatientsDAO.findAll(PatientsDAO.java:39) 
    at  za.co.lunginstitute.gregg.xrays.gui.models.PatientDataModel.loadAll(PatientDataModel.java:37) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at za.co.lunginstitute.gregg.xrays.workers.BackgroundRunner$BGRunner.doInBackground(BackgroundRunner.java:97) 
    at javax.swing.SwingWorker$1.call(Unknown Source) 
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) 
    at java.util.concurrent.FutureTask.run(Unknown Source) 
    at javax.swing.SwingWorker.run(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 

我跑了javaws的6下及7.我使用的JDK和JRE的。 只要我遠離webstart,一切都會正常工作。

我試圖從命令行運行應用程序作爲普通的java,然後作爲javaws。 Java的作品,但javaws給我這個錯誤。

我沒有檢查類路徑,雙重和三重檢查。所有的圖書館都在場。

我用小提琴手,一切按預期工作。進行連接,返回數據,然後出現此錯誤 - 僅在使用webstart時纔會發生。

+0

嘗試查看我在此之前的答案:http://stackoverflow.com/questions/16240637/errors-while-trying-to-make-a-restful-webservice-with-jersey/16240712#16240712 – thatidiotguy

+0

服務器發送回到正確的響應,我可以看到在提琴手的JSON。我在課程路徑中擁有所有新澤西庫 - 整個netbeans Jersey 1.13庫。 –

+0

你甚至看過我在該頁上的答案嗎?你很可能錯過了jersey-json庫。 – thatidiotguy

回答

0

找到 「解決方案」:

ClientConfig config = new DefaultClientConfig(); 
config.getClasses().add(JacksonJsonProvider.class); 

我沒有在我的代碼的最後一行。添加後,我不再有例外。

奇怪的是,它運行的應用程序爲java.exe,但不是javaws.exe。

現在我得到這個錯誤futher在代碼:關於類get方法

@XmlJavaTypeAdapter(SimpleDateAdapter.class) 

Caused by: org.codehaus.jackson.map.JsonMappingException: Can not construct instance of java.util.Date from String value '1980-01-01 CAT': not a valid representation (error: Can not parse date "1980-01-01 CAT": not compatible with any of standard forms ("yyyy-MM-dd'T'HH:mm:ss.SSSZ", "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", "EEE, dd MMM yyyy HH:mm:ss zzz", "yyyy-MM-dd")) 
at [Source: com.sun.jersey.clie[email protected]140fbd9; line: 1, column: 143] (through reference chain: za.co.lunginstitute.restbeans.Xray["xraydate"]) 
    at org.codehaus.jackson.map.JsonMappingException.from(JsonMappingException.java:163) 
at org.codehaus.jackson.map.deser.StdDeserializationContext.weirdStringException(StdDeserializationContext.java:243) 
at org.codehaus.jackson.map.deser.std.StdDeserializer._parseDate(StdDeserializer.java:553) 
at org.codehaus.jackson.map.deser.std.DateDeserializer.deserialize(DateDeserializer.java:28) 
at org.codehaus.jackson.map.deser.std.DateDeserializer.deserialize(DateDeserializer.java:19) 
at org.codehaus.jackson.map.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:299) 
at org.codehaus.jackson.map.deser.SettableBeanProperty$MethodProperty.deserializeAndSet(SettableBeanProperty.java:414) 
at org.codehaus.jackson.map.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:697) 
at org.codehaus.jackson.map.deser.BeanDeserializer.deserialize(BeanDeserializer.java:580) 
at org.codehaus.jackson.map.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:217) 
at org.codehaus.jackson.map.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:194) 
at org.codehaus.jackson.map.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:30) 
at org.codehaus.jackson.map.ObjectMapper._readValue(ObjectMapper.java:2695) 
at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1308) 
at org.codehaus.jackson.jaxrs.JacksonJsonProvider.readFrom(JacksonJsonProvider.java:419) 
at com.sun.jersey.api.client.ClientResponse.getEntity(ClientResponse.java:565) 
... 16 more 

我也用這個。再次運行時作爲java運行,而不是在javaws運行。

我是否缺少一些澤西配置設置。

+0

問題解決。使用:config.getClasses()。add(JacksonJaxbJsonProvider.class); –

相關問題