尝试使用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)中运行它。
问候,德鲁