di jersey 2.x saya mendapatkan kesalahan seperti java.util.concurrent.ExecutionException

  1. Saya telah menggunakan implementasi jersey jaxrs tetapi saya tidak dapat menjalankan program berikut ini jika saya mendapat masalah, ada ide yang membantu saya

    dalam program berikut saya menggunakan implementasi jersy 2.x dari jaxrs saya mengimplementasikan program menggunakan implementasi jersey dari jax-rs(restfull) 2 kelas yang saya tulis alih-alih web.xml saya menggunakan kelas tersebut

    Sumber Daya Saya.java

    package com.rest.application;
    
    import java.util.HashSet;
    import java.util.Set;
    
    import javax.ws.rs.ApplicationPath;
    
    import com.rest.webservice.SampleService;
    @ApplicationPath("rest")
    public class MyResource {
        private Set s;
        public MyResource() {
            s=new HashSet();
            s.add(new SampleService());
        }
         public Set getSingletons() {
            return s;
        }
    }
    

    SampleService.java

    import javax.ws.rs.GET;
    import javax.ws.rs.Path;
    import javax.ws.rs.PathParam;
    import javax.ws.rs.Produces;
    
    @Path("sample")
    public class SampleService {
        @GET
        @Produces("text/html")
        @Path("{username}")
        public String sayHello(@PathParam("username")String s) {
            return "<font color='blue' size=8>Hello:" +s+ "</font>";
        }
        @GET
        @Produces("text/plain")
        public String sayBye() {
        return "Bye";
    }
    }
    

    Saya menambahkan semua toples yang diperlukan ke program ini, namun saya masih mendapatkan kesalahan berikut

    java.util.concurrent.ExecutionException:
    org.apache.catalina.LifecycleException:
    Failed to start component [StandardEngine[Catalina].
    StandardHost[localhost].StandardContext[/RestApp2]]
    Caused by: org.apache.catalina.LifecycleException:
    Failed to start component [StandardEngine[Catalina].
    StandardHost[localhost].StandardContext[/RestApp2]]
    

    seperti kesalahan yang sama muncul di mana-mana

    ketika saya mengubah server Tomcat 7 menjadi 6 itu berfungsi tetapi tidak menampilkan hasilnya, adakah yang tahu, terima kasih sebelumnya


person Anil Amane    schedule 09.06.2015    source sumber
comment
tolong bersihkan kode Anda...tidak dapat membaca   -  person Rash    schedule 09.06.2015


Jawaban (2)


Ini mengatakan, @ApplicationPath("rest") hanya dapat diterapkan pada subkelas Aplikasi.

Bisakah Anda berbagi lebih banyak tentang apa yang Anda coba lakukan dan apa jejak tumpukan lengkapnya. Apakah Anda menggunakan web.xml?

person MSD    schedule 09.06.2015

Seperti yang disebutkan @MSD, penggunaan @ApplicationPath Anda salah. Lihat dokumentasi Jersey di Penerapan Aplikasi untuk melihat semua opsi penerapan yang berbeda, dan bagaimana mereka bekerja di lingkungan yang berbeda.

Pada dasarnya, cara termudah menempatkan @ApplicationPath pada kelas Application yang kosong

@ApplicationPath("/rest")
public class MyApplication extends Application {}

Ini akan memindai seluruh classpath untuk kelas beranotasi @Provider dan @Path, untuk mendaftar ke aplikasi. Meskipun ini mungkin tampak lebih mudah, pendekatan yang lebih umum ketika bekerja dengan Jersey adalah dengan menggunakan ResourceConfig, yang merupakan subkelas dari Application. Anda dapat mendaftarkan paket, yang akan memindai paket dan subpaket

@ApplicationPath("/rest")
public class MyApplication extends ResourceConfig {
    public MyApplication() {
        packages("com.my.packages");
    }
}

Salah satu keuntungannya adalah terkadang akan ada dependensi pihak ketiga yang diberi anotasi, namun Anda tidak ingin didaftarkan. Untuk mendaftarkan kelas individual cukup gunakan register(...class) di ResourceConfig.

Sekarang alasan kesalahan pada Tomcat 7 dan bukan 6, kemungkinan besar karena Tomcat 6 (servlet 2.5) tidak memiliki mekanisme pluggability sevlet, yang menggunakan file ServletContainerInitializer. Implementasi Jersey dari penginisialisasi ini memuat aplikasi, mencari @ApplicationPath pada subkelas Application. Jika Anda tidak berada di lingkungan 3.0, fungsi ini tidak akan berfungsi.

Perhatikan penginisialisasi Jersey disertakan dalam toples jersey-container-servlet. Anda dapat membaca lebih lanjut tentang hal ini di sini

person Paul Samsotha    schedule 10.06.2015