عامل تصفية الطلب لا يعمل في Jersey 2 على Embedded Jetty

StackOverflow https://stackoverflow.com//questions/21024688

  •  21-12-2019
  •  | 
  •  

سؤال

لا أستطيع تشغيل عامل تصفية الطلب الخاص بي.أقوم بتشغيل jetty 9.1 كخادم مضمن.

import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerRequestFilter;
import javax.ws.rs.ext.Provider;

@Provider
public class MyFilter implements ContainerRequestFilter {

    @Override
    public void filter(ContainerRequestContext arg0) throws IOException {
        System.out.println("HEY HO");
    }
}

لقد قمت بتسجيل هذا الفصل في ResourceConfig، وحاولت أيضًا تسجيل الحزمة.لقد تم تجاهله فقط.هل هو خطأ أم أنني أفتقد شيئًا ما؟

هذه هي الطريقة التي أبدأ بها جيتي:

Weld weld = new Weld();
WeldContainer container = weld.initialize();

URI baseUri = UriBuilder.fromUri("http://localhost/").port(8080).build();
ResourceConfig config = ResourceConfig.forApplicationClass(MyApplication.class);

Server server = JettyHttpContainerFactory.createServer(baseUri, config);

(يقوم MyApplication بتوسيع ResourceConfig والمكالمات this.package(...) و this.register(MyFilter.class) في المنشئ.

هل كانت مفيدة؟

المحلول

تكمن المشكلة في أنه لا يمكن إنشاء مثيل للفئة التي تحدد نقطة نهاية REST لأن - في حالتي - يعتمد إنشاء مثيل على العناصر التي يجب إعدادها في مرشح الطلب.

ومع ذلك، يتم إنشاء فئة نقطة النهاية قبل يسمى الفلتر .لتشغيل عامل التصفية أولاً، يجب أن يتم التعليق عليه @PreMatching.

@Provider
@PreMatching
public class MyFilter implements ContainerRequestFilter {
    ...
}

نصائح أخرى

لتمكين الطلبات الشاملة في ملف جرة جرة محفورة ذاتيا مع خدمات بقية جيرسي (للسماح بالمكالمات من SWAGER-UI).إنشاء فئة CorsResponseFilter:

giveacodicetagpre.

}

والرجوع إليها في فئة التطبيق الرئيسية الخاصة بك:

giveacodicetagpre.

}

بحلول الطريقة التي يتعين علينا تضمين المرشح مع Jetty and Jersey.آمل أن يستخدم هذا الكامل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top