我已经设置了一个 REST Web 服务和一个客户端。Web 服务部署在 Glassfish 服务器上。如果我从 netbeans 运行客户端的主类,一切正常。现在我使用 Maven 创建一个可执行的 jar 文件,如果我尝试运行这个 jar 文件,我会收到以下异常消息:
21.07.2013 13:40:05 com.sun.jersey.api.client.ClientResponse getEntity
SCHWERWIEGEND: A message body reader for Java class java.lang.String, and Java type class java.lang.String, and MIME media type application/xml was not found
21.07.2013 13:40:05 com.sun.jersey.api.client.ClientResponse getEntity
SCHWERWIEGEND: The registered message body readers compatible with the MIME media type are:
*/* ->
com.sun.jersey.atom.rome.impl.provider.entity.AtomFeedProvider
com.sun.jersey.atom.rome.impl.provider.entity.AtomEntryProvider
Exception in thread "main" com.sun.jersey.api.client.ClientHandlerException: A message body reader for Java class java.lang.String, and Java type class java.lang.String, and MIME media type application/xml was not found
at com.sun.jersey.api.client.ClientResponse.getEntity(ClientResponse.java:561)
at com.sun.jersey.api.client.ClientResponse.getEntity(ClientResponse.java:517)
at com.sun.jersey.api.client.WebResource.handle(WebResource.java:684)
at com.sun.jersey.api.client.WebResource.access$200(WebResource.java:74)
at com.sun.jersey.api.client.WebResource$Builder.get(WebResource.java:507)
at de.movienexuscmd.MovieNexusWebserviceClient.getXml(MovieNexusWebserviceClient.java:52)
at de.movienexuscmd.App.run(App.java:20)
at de.movienexuscmd.App.main(App.java:16)
现在我真的不知道为什么只有在尝试执行 jar 文件时才会出现这个异常。希望任何人都可以提供帮助。
我的网络服务看起来像:
@Path("MovieNexus")
public class MovieNexusWebService {
@Context
private UriInfo context;
private MovieNexusFrontController frontController = null;
/**
* Creates a new instance of MovieNexusWebService
*/
public MovieNexusWebService() {
frontController = new MovieNexusFrontController();
}
/**
* Retrieves representation of an instance of
* de.webservice.MovieNexusWebService
*
* @return an instance of java.lang.String
*/
@GET
@Produces("application/xml")
public String getXml() {
return frontController.getRandomMovie().getMovieName();
}
/**
* PUT method for updating or creating an instance of MovieNexusWebService
*
* @param content representation for the resource
* @return an HTTP response with content of the updated or created resource.
*/
@PUT
@Consumes("application/xml")
public void putXml(String content) {
}
}
客户端:
public class MovieNexusWebserviceClient {
private WebResource webResource;
private Client client;
private static final String BASE_URI = "http://localhost:17589/MovieNexusWebservice/webresources";
public MovieNexusWebserviceClient() {
com.sun.jersey.api.client.config.ClientConfig config = new com.sun.jersey.api.client.config.DefaultClientConfig();
client = Client.create(config);
webResource = client.resource(BASE_URI).path("MovieNexus");
}
public String getXml() throws UniformInterfaceException {
WebResource resource = webResource;
return resource.accept(javax.ws.rs.core.MediaType.APPLICATION_XML).get(String.class);
}
public void putXml(Object requestEntity) throws UniformInterfaceException {
webResource.type(javax.ws.rs.core.MediaType.APPLICATION_XML).put(requestEntity);
}
public void close() {
client.destroy();
}
}
问候
诺亚