• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Błąd podczas wysłania zapytania http do usługi internetową która ma na celu zwrócenie prostego obiektu.

Object Storage Arubacloud
0 głosów
76 wizyt
pytanie zadane 8 lutego w Java przez Wojo772233 Początkujący (350 p.)

Cześć. Tworzę banalną usługę internetową która ma na celu zwrócenie prostego obiektu Alien składającego się z nazwy (String) i punktów (int), a moje pytanie brzmi, dlaczego po wpisaniu adresu http://localhost:8080/demorest/webapi/aliens ciągle otrzymuję komunikat w konsoli:

"MessageBodyWriter not found for media type=application/xml"... 

 

piszę kod z odcinka https://www.youtube.com/watch?v=BZi44GOD8kY&t=929s

u niego działa, u mnie nie.

 

oto kod:

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>jersey-quickstart-webapp</artifactId>
    <packaging>war</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>jersey-quickstart-webapp</name>
    <url>http://maven.apache.org</url>

    <dependencies>
        <!-- Jersey dependencies -->
        <dependency>
            <groupId>org.glassfish.jersey.containers</groupId>
            <artifactId>jersey-container-servlet</artifactId>
            <version>3.1.5</version>
        </dependency>
        <!-- JAXB for XML binding -->
        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <version>2.3.0</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jaxb</groupId>
            <artifactId>jaxb-runtime</artifactId>
            <version>2.3.4</version>
        </dependency>
    </dependencies>

    <build>
        <finalName>jersey-quickstart-webapp</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.4.0</version>
            </plugin>
        </plugins>
    </build>
</project>
package com.telusko.demorest;

import java.util.Arrays;
import java.util.List;

import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType;

@Path("aliens")
public class AlienResource {
	@GET
	@Produces(MediaType.APPLICATION_XML)
	public List<Alien> getAlien() {
		System.out.println("getAlien called...");
		Alien a1 = new Alien();
		a1.setName("Wojo");
		a1.setPoints(60);
		
		Alien a2 = new Alien();
		a2.setName("Dojo");
		a2.setPoints(30);
		
		List<Alien> aliens = Arrays.asList(a1,a2);
		
		return aliens;
		
	}
}
package com.telusko.demorest;

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement

public class Alien {
	String name;
	int points;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getPoints() {
		return points;
	}
	public void setPoints(int points) {
		this.points = points;
	}
	
	
}
<?xml version="1.0" encoding="UTF-8"?>
<!-- This web.xml file is not required when using Servlet 3.0 container,
     see implementation details http://jersey.java.net/nonav/documentation/latest/jax-rs.html -->
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="https://jakarta.ee/xml/ns/jakartaee" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd http://xmlns.jcp.org/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="5.0">
    <servlet>
        <servlet-name>Jersey Web Application</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>jersey.config.server.provider.packages</param-name>
            <param-value>com.telusko.demorest</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Jersey Web Application</servlet-name>
        <url-pattern>/webapi/*</url-pattern>
    </servlet-mapping>
</web-app>

 

1 odpowiedź

0 głosów
odpowiedź 8 lutego przez Wiciorny Ekspert (270,230 p.)

A sprawdź czy dodanie zależności do uwzględnienia Typu dla @Media Ci nie pomoże.

Poczytaj sobie ogólnie o https://docs.oracle.com/javase/tutorial/jaxb/intro/, domyślny typ to JSON
A wiedzę, że korzystasz z Jaxb glassfisha.  - > stąd ten import, w przeciwnym razie jeszcze trzeba będzie znaleźć inną zaleznośc. 

<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-jaxb</artifactId>
    <version>3.0.2</version>
</dependency>

 

Podobne pytania

0 głosów
0 odpowiedzi 618 wizyt
pytanie zadane 7 marca 2016 w Java przez bercik9991 Nowicjusz (120 p.)
0 głosów
1 odpowiedź 700 wizyt
0 głosów
0 odpowiedzi 432 wizyt
pytanie zadane 7 września 2021 w JavaScript przez rszczepanski02 Obywatel (1,180 p.)

92,584 zapytań

141,434 odpowiedzi

319,671 komentarzy

61,968 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...