Gerar jar com resources proprios e acessa-los

Boa tarde,

A situação é a seguinte:Eu criei um framework simples, voltado ao meio web, ao qual disponibiliza resources web, como css,imagem,javascript e etc… e qualquer outro projeto que quiser simplesmente apontar para os meus resources, basta adicionar o meu jar nas libs do web-inf, e mapear a minha servlet de resources no web.xml.

Porém, não sei se será possivel este pacote jar acessar seus proprios arquivos de resources quando estiver “dentro” de outro projeto que o referenciou, ja que qdo este projeto, ao qual esta usando o meu JAR, for carregado no servidor de aplicação, a estrutura das pastas seram geradas a partir dele, e não consigo imaginar como o jar la dentro da “lib” ira conseguir, através de sua servlet propria, acessar os arquivos dele mesmo, e não os do outro projeto.

No caso, eu montei uma estrutura assim, qualquer um que queria meu pacote de resources, basta adicionar o JAR no classpath do um projeto web, e declarar no web.xml a minha servlet de resources:

<servlet>
		<servlet-name>webresources</servlet-name>
		<servlet-class>br.com.sourcesphere.servlet.ResourceServlet</servlet-class>
		<init-param>
			<param-name>cacheTimeout</param-name>
			<param-value>86400</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	
	<servlet-mapping>
		<servlet-name>webresources</servlet-name>
		<url-pattern>/resources/*</url-pattern>
	</servlet-mapping>

Alguem sabe se tem algum modo de fazer isso ?

PS: Minha servlet ja esta rodando perfeitamente, porem só consegue ver os arquivos do projeto que o referenciou…

Pessoal, consegui finalmente, é muito simples afinal…

Lembrei que a classe “Class” do Java possuía uma metodo chamado getResource, e ele retorna uma URL de qualquer arquivo de dentro do pacote de classes.

Para quem precisar segue um exemplo:

public class ExemploResourceProprio
{
   //construtores, atributos, metodos... e etc...

  public URL getArquivoLocalDoJar(String caminhodoresource)
  {
      return ExemploResourceProprio.class.getResource(caminhodoresource);
  }
}