Старый поток, я знаю ... но я придумал небольшой хак, который позволяет вам обслуживать апплеты, которые находятся в вашей папке WEB-INF / classes, так что вам не нужен дополнительный jar в вашем проекте (и вы можете переустановить свой апплет немного быстрее). Недостатком этого является то, что вы не можете подписать свой апплет (потому что это .class, а не jar). Давайте перейдем к погоне здесь ...
Сначала создайте небольшой сервлет, который обслуживает апплеты (для этого требуется Javassist):
public class AppletServlet implements Servlet {
...
ClassPool pool = ClassPool.getDefault();
@Override
public void init(ServletConfig config) throws ServletException {
pool.insertClassPath(new ClassClassPath(this.getClass()));
}
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
String className = ((HttpServletRequest) req).getPathInfo().substring(1);
try {
CtClass cc = pool.get(className.replace("/", ".").replace(".class", ""));
res.setContentType("application/x-java-applet;version=1.5.0");
res.setContentLength(cc.toBytecode().length);
res.getOutputStream().write(cc.toBytecode());
res.getOutputStream().close();
} catch (Exception e) {
e.printStackTrace();
}
}
...
}
Теперь объявите ваш AppletServlet (я знаю, ужасное имя) как сервлет в вашем web.xml:
<servlet>
<servlet-name>Applet Servlet</servlet-name>
<servlet-class>com.example.AppletServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Applet Servlet</servlet-name>
<url-pattern>/applet/*</url-pattern>
</servlet-mapping>
Наконец, вызовите апплет со своей страницы:
<object type="application/x-java-applet" height="300" width="550">
<param name="codebase" value="applet/" />
<param name="code" value="com.example.MyApplet" />
<param name="teste" value="teste"></param>
Applet failed to run. No Java plug-in was found.
</object>
И это все. Сервлет будет использовать Javassist, чтобы получить байт-код для вашего класса и передать его по запросу.
Отказ от ответственности Если кто-то знает структуру вашего пакета, он может загрузить все классы и делать оттуда злые дела. Поэтому убедитесь, что вы разрешаете сервлету обслуживать только классы, которые на самом деле являются апплетами.