Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Как достать jsp из jar


Автор: oson 9.4.2009, 21:51
Внутри war в WEB-INF/lib/my.jar находится страница  my.jsp, managed bean для нее и faces-config.xml с записями для бина и страницы.
Этот jar клиент просто копирует к себе в war, затем должен написать на страничке своей 
Код


<include>my.jsp</include>




и моя my.jsp должна быть включена в его страницу.
Как сделать так, чтобы my.jsp, managed bean  и faces-config.xml был доступен из jar для всего приложения?

Автор: ecologist 10.4.2009, 08:36
Наверно надо распаковать архив и вытащить оттуда нужные тебе файлы в директории. 
JSP-то уж точно не получится не вытаскивать - ее же надо в сервлет преобразовать и потом скомпилировать в класс.

Автор: powerOn 12.4.2009, 16:54
Такую функциональность можно релизовать с помощью Facelets, написав свой Resource Resolver.

Код

package somepackage;

import com.sun.facelets.impl.DefaultResourceResolver;
import java.net.URL;

public class SourceJarResolver extends DefaultResourceResolver
{
    public SourceJarResolver()
    {
        super();
    }

    @Override
    public URL resolveUrl(String path)
    {
        URL url = super.resolveUrl(path);
        if (url == null)
        {
            if (path.startsWith("/"))
            {
                path = path.substring(1);
            }
            url = Thread.currentThread().getContextClassLoader().getResource(path);
        }
        return url;
    }

    @Override
    public String toString()
    {
        return "SourceJarResolver";
    }
}


В web.xml:
Код

    <context-param>
        <param-name>facelets.RESOURCE_RESOLVER</param-name>
        <param-value>somepackage.SourceJarResolver</param-value>
    </context-param>


Ресурс ресолвер будет искать файлы со страницами в jar файлах (читай "в класспафе"), если он не будет найден основным ресолвером. Опятьже это будет работать только если используются Facelets.
 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)