Попытка использовать javax.imageio.spi.ServiceRegistry
для динамической регистрации процессоров запросов для HttpServlet
:
private static final Class PROVIDER_CLASS = IRequestProcessor.class;
private void loadProviders() throws ClassNotFoundException {
_serviceRegistry = new ServiceRegistry(ServiceRegistry.lookupProviders(PROVIDER_CLASS));
}
Я получаю ошибку:
java.lang.ClassCastException: org.confused.servlet.GetStandardCodesProcessor
javax.imageio.spi.ServiceRegistry.<init>(ServiceRegistry.java:103
org.confused.servlet.MyServlet.loadProviders(.java:100)
org.confused.servlet.MyServlet.checkProviders(.java:106)
org.confused.servlet.MyServlet.service(.java:44)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
Класс GetStandardCodesProcessor
реализуетIRequestProcessor
.Вызов ServiceRegistry.lookupProviders()
получает список классов из файла META-INF/services/org.confused.servlet.IRequestProcessor
.Кажется, мне не хватает нюанса о том, как передать итератор из ServiceRegistry.lookupProviders()
.
Эта страница в значительной степени показывает, что я делаю, хотя и присваиваю возврат из lookupProviders () к нетипизированному итератору, который, в свою очередь, передается конструктору ServiceRegistry
.Эта техника дает мне ту же ошибку.
Наконец, я запускаю ее в Eclipse Gallileo (сборка 20100218-1602), если это имеет значение.
С уважением, Дрю