com.Sonne.jersey.api.client.ClientHandlerException
Bin ich mit Trikot in meiner REST-Anwendung. Ich brauche, um es zu testen mit junit. Aber ich habe eine com.sun.jersey.api.client.ClientHandlerException
. Stacktrace:
SEVERE: The registered message body readers compatible with the MIME media type are:
application/octet-stream ->
com.sun.jersey.core.impl.provider.entity.ByteArrayProvider
com.sun.jersey.core.impl.provider.entity.FileProvider
com.sun.jersey.core.impl.provider.entity.InputStreamProvider
com.sun.jersey.core.impl.provider.entity.DataSourceProvider
com.sun.jersey.core.impl.provider.entity.RenderedImageProvider
*/* ->
com.sun.jersey.core.impl.provider.entity.FormProvider
com.sun.jersey.core.impl.provider.entity.StringProvider
com.sun.jersey.core.impl.provider.entity.ByteArrayProvider
com.sun.jersey.core.impl.provider.entity.FileProvider
com.sun.jersey.core.impl.provider.entity.InputStreamProvider
com.sun.jersey.core.impl.provider.entity.DataSourceProvider
com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider$General
com.sun.jersey.core.impl.provider.entity.ReaderProvider
com.sun.jersey.core.impl.provider.entity.DocumentProvider
com.sun.jersey.core.impl.provider.entity.SourceProvider$StreamSourceReader
com.sun.jersey.core.impl.provider.entity.SourceProvider$SAXSourceReader
com.sun.jersey.core.impl.provider.entity.SourceProvider$DOMSourceReader
com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider$General
com.sun.jersey.core.impl.provider.entity.XMLListElementProvider$General
com.sun.jersey.core.impl.provider.entity.XMLRootObjectProvider$General
com.sun.jersey.core.impl.provider.entity.EntityHolderReader
com.sun.jersey.api.client.ClientHandlerException: A message body reader for Java class com.example.Student, and Java type class com.example.Student, and MIME media type application/octet-stream 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.example.servlet.StudentResourceTest.test(StudentResourseTest.java:85)
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 org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:83)
at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:231)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:88)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:174)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Weiß ich nicht wie ich diesen Fehler beheben kann. Ich freue mich auf Eure Hilfe.
Mein code:
@Path("/student")
@Component
public class StudentResourse {
@Autowired
private StrudentService service;
@Path("/getStudent/{id}")
@GET
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public Student getStudent(@PathParam("id") long id) {
return service.get(id);
}
}
Dieser Klasse, funktioniert einwandfrei. Wenn ich im browser: http://127.0.0.1:8080/Application/student/getStudent/100500
es zeigt mir, dass Schüler, die in xml
Meine test-Klasse:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:configuration.xml")
@TestExecutionListeners({ DbUnitTestExecutionListener.class,
DependencyInjectionTestExecutionListener.class,
DirtiesContextTestExecutionListener.class,
TransactionalTestExecutionListener.class })
public class StudentResourseTest extends JerseyTest {
@Override
protected AppDescriptor configure() {
return new WebAppDescriptor.Builder("com.example.servlet")
.contextPath("context").build();
}
@Override
protected TestContainerFactory getTestContainerFactory() {
return new HTTPContainerFactory();
}
@Test
@DatabaseSetup("dataset.xml")
public void test() throws UnsupportedEncodingException {
ClientConfig config = new DefaultClientConfig();
Client client = Client.create(config);
WebResource service = client.resource(getBaseURI());
ClientResponse response = service.path("getStudent").path("100500")
.accept(MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON)
.get(ClientResponse.class);
Student student = (Student) response.getEntity(Student.class);
System.out.println(student);
}
@Override
public URI getBaseURI() {
return UriBuilder.fromUri("http://127.0.0.1:8080/Application/student/")
.build();
}
}
Ich bin mit dieser Abhängigkeit:
<dependency>
<groupId>com.sun.jersey.jersey-test-framework</groupId>
<artifactId>jersey-test-framework-http</artifactId>
<version>1.2</version>
</dependency>
Schüler der Klasse gekennzeichnet als @XmlRootElement. Problem ist in der test-Klasse. Irgendwelche Ideen? Vielen Dank für Eure Antworten
Nutzen Sie auch Jersey in der version 1.2? Tun Sie verwenden müssen, um solch eine alte version oder kann man auch wechseln, um die neueste was ist 1.17.1? Was ist der HTTP-Statuscode der Antwort erhalten?
Es gibt 404 Nicht Gefunden. Ich weiß nicht, warum, weil es funktioniert im browser
Es gibt 404 Nicht Gefunden. Ich weiß nicht, warum, weil es funktioniert im browser
InformationsquelleAutor Cat H | 2013-10-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du bist der Bereitstellung Ihrer Anwendung zu
context
Kontext-Pfad, aber dann sind Sie unter der Annahme (durch überschreibengetBaseURI()
- Methode), dass die Anwendung bereitgestellt wird, die aufApplication
Kontext-Pfad. Versuchen Sie, entfernen das übergeordnetegetBaseURI()
Methode und ändern Sie die test-Methode, die folgenden:Überprüfen Sie auch für den HTTP-Antwortstatus (sollte
200
) und response-Medien-Typ (sollteapplication/xml
in diesem Fall - wenn Sie eine Anfrageapplication/xml
und bekommenapplication/octet-stream
etwas offensichtlich falsch ist).InformationsquelleAutor Michal Gajdos
Verwendung unter annortation @XmlRootElement
und ändern library von jersey
UND server-log-sauber nach dem veröffentlichen des Projekts
InformationsquelleAutor gajera bhavin
Bitte überprüfen Sie Ein message-body-writer für Java-Typ, - Klasse myPackage.B-und MIME-media-Typ application/octet-stream nicht gefunden wurde
& dieser link, um Ihr Problem zu beheben.Ich hoffe, es ist genug, zu Sortieren, Ihr problem.
InformationsquelleAutor Anil