Problemas com Struts 2 e weblogic

Olá gente…tudo bom? Precisava de um help seu em relação a configuração do Struts 2, se você puder me responder é claro…
Tenho uma aplicação construída em Struts 2. Funciona perfeitamente…quando local, mas o problema ocorre quando mando gerar o war e coloco a aplicação no servidor.

O weblogic manda pra mim uns erros muito estranhos. Alguns até consegui resolver…mas tem certos erros que tá difícil como por exemplo a biblioteca “xwork”. pelo que entendi ela depende de um acesso externo a NET, coisa que o weblogic não permite…eu acho…

Deixei meu struts.xml com a seguinte alteração no head:

<!DOCTYPE struts SYSTEM "struts-2.0.dtd">

Dessa forma busco o arquivo DTD localmente.

Alterei o web.xml e acrescentei o seguinte filtro:

[quote]

	 <filter-name>struts-cleanup</filter-name>

	 <filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>

 </filter>

 <filter>

	 <filter-name>struts2</filter-name>

	 <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>

 </filter>

 <filter-mapping>

	 <filter-name>struts-cleanup</filter-name>

	 <url-pattern>/*</url-pattern>

 </filter-mapping>

 <filter-mapping>

	 <filter-name>struts2</filter-name>

	 <url-pattern>/*</url-pattern>

 </filter-mapping>[/quote]

Assim em teoria não haveria conflito com algum outro Dispatcher no servidor.

E por ultimo joguei o arquivo DTD direto do source.

Até aí resolveu parte do problema…mas rodando a aplicação em off-line na minha máquina ocorre o seguinte erro:

[code]<11/01/2012 15h31min23s BRST> <Could not load user defined filter in web.xml: org.apache.struts2.dispatcher.FilterDispatcher.

Class: weblogic.net.http.HttpURLConnection

File: HttpURLConnection.java

Method: getInputStream

Line: 445 - weblogic/net/http/HttpURLConnection.java:445:-1

 [color=red] at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadConfigurationFiles(XmlConfigurationProvider.java:791)

 at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadDocuments(XmlConfigurationProvider.java:132)

 at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.init(XmlConfigurationProvider.java:100)

 at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reload(DefaultConfiguration.java:130)

 at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:52)[/color]

 Truncated. see log file for complete stacktrace

Caused By: Class: weblogic.net.http.HttpURLConnection

File: HttpURLConnection.java

Method: getInputStream

Line: 445 - weblogic/net/http/HttpURLConnection.java:445:-1

 [color=red] at com.opensymphony.xwork2.util.DomHelper.parse(DomHelper.java:123)

 at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadConfigurationFiles(XmlConfigurationProvider.java:786)

 at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadDocuments(XmlConfigurationProvider.java:132)

 at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.init(XmlConfigurationProvider.java:100)

at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reload(DefaultConfiguration.java:130)[/color]

 Truncated. see log file for complete stacktrace

Caused By: java.lang.NullPointerException

 at weblogic.net.http.HttpURLConnection.getInputStream(HttpURLConnection.java:445)

 at weblogic.net.http.SOAPHttpURLConnection.getInputStream(SOAPHttpURLConnection.java:37)

 at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:677)

 at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(XMLEntityManager.java:1315)

 at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startDTDEntity(XMLEntityManager.java:1282)

 Truncated. see log file for complete stacktrace[/code]

Como dá pra notar nas linhas em vermelho o weblogic procura a dependência xwork ou não deixa ela fazer acesso externo.

De qualquer forma esse é meu problema. Alguém já passou por isso? Pode me ajudar?

Valeu gente.

Abs.

Olá gente…tudo bom?
O problema todo estava na versão do Struts que eu estava utilizando (struts-2.0.6). Essa versão é de 2007 e tem ainda embutido o Dojo nela. Aliás optei por ela por causa do Dojo mesmo. O contra é que no caso dessa versão…a biblioteca do xwork ainda não estava integrada ao Struts 2. O que acontecia era o seguinte…o controlador continuava sendo o Struts 2…que delegava ao xwork…nesse caso uma biblioteca separada…a validar os DTDs externamente. Se estou offline a validação não ocorre. Até então eu já havia tentado de tudo…inclusive alterar os headers dos arquivos xml internos do jar do xwork na unha apontando para o SYSTEM e jogando as DTDs de validação no meu WEB-INF. Não resolveu. A solução que encontrei aos 30 minutos finais da prorrogação foi atualizar a versão do Struts 2 por uma mais recente. Claro que houve um impacto nisso…já que a aplicação já estava redonda e rodando perfeitamente. Precisei implementar uma funcionalidade do Dojo na unha e tirar algumas requisições de DIVs que eu fazia via ajax. Fora que algumas funcionalidades que implementei na raça pararam de funcionar nessa versão. Já implementou um tooltip em colunas do DisplayTable? Na versão antiga do Struts 2 rolava de boa ( <display:column title="Evento" > <s:a title="${item.event.descricao}"> ${item.event.evento} </s:a> </display:column>).
Nessa versão não consigo implementar.
Realmente não pareceu ser grande coisa chegar a conclusão de que a solução seria atualizar a versão…mas vocês sabem tão bem quanto eu os riscos de se atualizar versão de Frameworks…e eu não queria arriscar um impacto muito grande. No fim foi a melhor e única solução mesmo. Não vamos esquecer que o Struts 2 na verdade é o webwork renomeado…então…com certeza trouxe os mesmos problemas com ele quando foi adquirido pelo Apache. Um desses “bugs” com certeza podemos considerar que seja essa falta de integridade do Struts 2 com o projeto xwork na versão que estava utilizando. Ainda bem que corrigiram né?

Abraço.