Tomcat 7 - Metode @GET dengan @ApplicationPath - status kesalahan 404

saya ingin menjalankan proyek saya di Tomcat menggunakan jalur titik akhir berikut adalah dua file Java saya

ini adalah kelas aplikasi saya

package app;

    import javax.ws.rs.ApplicationPath;
    import javax.ws.rs.core.Application;

    @ApplicationPath("/t")
    public class App extends Application{

    }

ini adalah kelas titik akhir

package controllers;

import java.util.List;

import javax.ws.rs.ApplicationPath;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import dao.IEntityDAO;
import daoimpl.EntityDAOImpl;
import dto.Contacts;
import view.ContactView;

@ApplicationPath("/t1")
public class ContactController {

    @Path("/hi")
    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String getpassword()
    {
        return "Hiii";
    }

    @Path("/t2")
    @GET()
    @Produces(MediaType.APPLICATION_JSON)
    public List<ContactView> getallEntity(){

        IEntityDAO obj = new EntityDAOImpl();

        return obj.getallEntity();
    }       


}

Tomcat 7 saya sedang berjalan Tetapi ketika saya menjalankannya di Tomcat dengan mengikuti jalur

http://localhost:8006/ContactApp/t/t1/hi

itu menunjukkan kesalahan berikut

HTTP Status 404 - /ContactApp/t/t1/hi


type Status report

message /ContactApp/t/t1/hi

description The requested resource is not available.


Apache Tomcat/7.0.47

ada yang bisa membantu??


person Faisal Amdani    schedule 03.07.2017    source sumber


Jawaban (1)


@ApplicationPath hanya dapat diterapkan pada subkelas Aplikasi :

Mengidentifikasi jalur aplikasi yang berfungsi sebagai URI dasar untuk semua URI sumber daya yang disediakan oleh Path. Hanya dapat diterapkan pada subkelas Aplikasi.

Untuk yang ini:

@ApplicationPath("/t")
public class App extends Application{

}

Itu baik-baik saja.

Namun tidak demikian halnya dengan ContactController yang tidak boleh dideklarasikan dengan @ApplicationPath :

@ApplicationPath("/t1")
public class ContactController {

tetapi dengan @Path (tanpa garis miring di depan) :

@Path("t1")
public class ContactController {

Ekstrak Path javadoc :

Mengidentifikasi jalur URI yang permintaannya akan dilayani oleh kelas sumber daya atau metode kelas. .... Jalan itu relatif. Untuk kelas beranotasi, URI dasar adalah jalur aplikasi, lihat ApplicationPath.

Terakhir, Anda harus menghapus garis miring di depan untuk @Path metode REST Anda: @Path("/t1")

Hal ini tidak diperlukan karena spesifikasi Path menjelaskan bahwa / di awal akan diabaikan dan URI dasar ditangani seolah-olah / telah ditambahkan.

Untuk tujuan memutlakkan jalur terhadap URI dasar, tanda '/' di awal jalur akan diabaikan dan URI dasar diperlakukan seolah-olah berakhiran '/'

Jadi ini:

@Path("/hi")
...
@Path("/t2")

harus diganti dengan:

@Path("hi")
...
@Path("t2")
person davidxxx    schedule 03.07.2017