我正在为我们公司编写基于弹簧的Web应用程序,并且我收到了应该加密我们应用程序类的命令。在Jetty中使用自定义的WebAppClassloader
我发现了一个简单的classloader实现,它可以做伎俩here。它基本上是一个实现自己的loadClass和findClass方法的URLClassLoader。
我遵循Jetty wiki @ eclipse的指示,我通过扩展WebAppClassLoader创建了自己的类加载器。我已经实现findClass()和loadClass()方法在第一个链接建议(几乎复制&粘贴)。
我的类加载器的完整代码可以在这里看到on gist。
我已经在jetty中使用上下文设置了classloader。
<Configure id="clsLdrCtx" class="org.eclipse.jetty.webapp.WebAppContext">
<Set name="contextPath">/server</Set>
<Set name="war">
/home/me/workz/protection/classloading/server/target/server-0.0.0-SNAPSHOT.war</Set>
<Set name="classLoader">
<New class="org.eclipse.jetty.webapp.WebAppClassLoaderEncrypted">
<Arg><Ref id="clsLdrCtx"/></Arg>
</New>
</Set>
</Configure>
我开始码头(没有任何加密的班,只是为了看看类加载器workz)和我有以下异常:
2011-10-11 14:59:58.401:WARN::FAILED encodingFilter: java.lang.IllegalStateException: class org.springframework.web.filter.CharacterEncodingFilter is not a javax.servlet.Filter
(完整的堆栈跟踪也同样主旨链接如上)
(如果我不落实的findClass()它使用从URLClassLoader的执行和它运行得很好。)
ç你看到什么可能是问题?我会为任何回答很高兴,谢谢