FJ 21 - Struts 2

3 respostas
Gustavo.L

Olá

Estou estudando a apostila e agarrei no exercício de Struts2, segue abaixo:

criei Dynamic Web Project chamado Struts2

declaração do Filtro:

[color=green]
struts2

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter



struts2
/*
[/color]

Depois coloquei os seguintes JAR’s na pasta:

Struts2 -> WebContent -> WEB-INF -> lib

JAR’s:

commons-fileupload-1.2.1
commons-io-1.3.2
commons-logging-1.0.4
freemarker-2.3.16
jstl
ognl-3.0
standard
struts2-convention-plugin-2.2.1.1
struts2-core-2.2.1.1
xwork-core-2.2.1.1

depois atualizei o projeto (Refresh) e os JAR’s apareceram nas bibliotecas (Web App Libraries)

o nome do pacote escolhi diferente da apostila…

Pacote tarefa.action, New -> Class

classe olaMundoAction

package tarefa.action;

import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;

public class olaMundoAction {
	
	@Action(value = "olaMundoStruts", results = {
			@Result(location="/olaMundoStruts.jsp", name = "ok")})

			public String execute(){
		
			System.out.print("Executando a lógica com Struts 2!");
			return "ok";
		
	}
			
}

depois criei um novo JSP

JSP olaMundoStruts:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Struts 2</title>
</head>
<body>
Ola Mundo com Struts2!!!
</body>
</html>

Em nenhuma dessas classes surgiu algum erro aparente.

Fiquei em dúvida sobre o na declaração do Filtro no web.xml
Mas fui na biblioteca struts2-core-2.2.1.1.jar e existe um pacote chamado org.apache.struts2.dispatcher.ng.filter e nele contém uma classe chamada StrutsPrepareAndExecuteFilter.class

Dai digitei no Browser:

http://localhost:8080/Struts2/olaMundoStruts.jsp -> Funcionou direitinho

ai tirei o olaMundoStruts.jsp do final como manda a apostila e digitei o atributo value que a anotação @Action contém

http://localhost:8080/Struts2/olaMundoStruts

e deu erro: Status 404
message

Quando compilo diretamente no Eclipse com a opção Run on Server aparece o seguinte erro no console:

Erro:

24/01/2011 19:08:53 org.apache.catalina.core.AprLifecycleListener init

INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre6\bin;.;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Program Files\Dell\DW WLAN Card;c:\Program Files\WIDCOMM\Bluetooth Software;c:\Program Files\WIDCOMM\Bluetooth Software\syswow64;c:\Program Files (x86)\Common Files\Roxio Shared\DLLShared

24/01/2011 19:08:53 org.apache.tomcat.util.digester.SetPropertiesRule begin

AVISO: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property source to org.eclipse.jst.jee.server:Struts2 did not find a matching property.

24/01/2011 19:08:53 org.apache.coyote.http11.Http11Protocol init

INFO: Initializing Coyote HTTP/1.1 on http-8080

24/01/2011 19:08:53 org.apache.catalina.startup.Catalina load

INFO: Initialization processed in 592 ms

24/01/2011 19:08:53 org.apache.catalina.core.StandardService start

INFO: Starting service Catalina

24/01/2011 19:08:53 org.apache.catalina.core.StandardEngine start

INFO: Starting Servlet Engine: Apache Tomcat/6.0.26

24/01/2011 19:08:54 com.opensymphony.xwork2.util.logging.commons.CommonsLogger info

INFO: Parsing configuration file [struts-default.xml]

24/01/2011 19:08:54 com.opensymphony.xwork2.util.logging.commons.CommonsLogger info

INFO: Parsing configuration file [struts-plugin.xml]

24/01/2011 19:08:54 com.opensymphony.xwork2.util.logging.commons.CommonsLogger info

INFO: Unable to locate configuration files of the name struts.xml, skipping

24/01/2011 19:08:54 com.opensymphony.xwork2.util.logging.commons.CommonsLogger info

INFO: Parsing configuration file [struts.xml]

24/01/2011 19:08:54 com.opensymphony.xwork2.util.logging.commons.CommonsLogger error

GRAVE: Dispatcher initialization failed

java.lang.RuntimeException: java.lang.reflect.InvocationTargetException

at com.opensymphony.xwork2.inject.ContainerImpl$MethodInjector.inject(ContainerImpl.java:295)

at com.opensymphony.xwork2.inject.ContainerImpl$ConstructorInjector.construct(ContainerImpl.java:431)

at com.opensymphony.xwork2.inject.ContainerBuilder$5.create(ContainerBuilder.java:207)

at com.opensymphony.xwork2.inject.Scope$2$1.create(Scope.java:51)

at com.opensymphony.xwork2.inject.ContainerBuilder$3.create(ContainerBuilder.java:93)

at com.opensymphony.xwork2.inject.ContainerBuilder$7.call(ContainerBuilder.java:487)

at com.opensymphony.xwork2.inject.ContainerBuilder$7.call(ContainerBuilder.java:484)

at com.opensymphony.xwork2.inject.ContainerImpl.callInContext(ContainerImpl.java:574)

at com.opensymphony.xwork2.inject.ContainerBuilder.create(ContainerBuilder.java:484)

at com.opensymphony.xwork2.config.impl.DefaultConfiguration.createBootstrapContainer(DefaultConfiguration.java:252)

at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:193)

at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:66)

at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:371)

at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:415)

at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:69)

at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:51)

at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:295)

at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422)

at org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:115)

at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3838)

at org.apache.catalina.core.StandardContext.start(StandardContext.java:4488)

at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)

at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)

at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)

at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)

at org.apache.catalina.core.StandardService.start(StandardService.java:519)

at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)

at org.apache.catalina.startup.Catalina.start(Catalina.java:581)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)

at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

Caused by: java.lang.reflect.InvocationTargetException

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at com.opensymphony.xwork2.inject.ContainerImpl$MethodInjector.inject(ContainerImpl.java:293)

 33 more

Caused by: java.lang.ExceptionInInitializerError

at com.opensymphony.xwork2.ognl.OgnlValueStackFactory.setContainer(OgnlValueStackFactory.java:85)

 38 more

Caused by: java.lang.IllegalArgumentException: Javassist library is missing in classpath! Please add missed dependency!

at ognl.OgnlRuntime.(OgnlRuntime.java:165)

 39 more

Caused by: java.lang.ClassNotFoundException: javassist.ClassPool

at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1516)

at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1361)

at java.lang.Class.forName0(Native Method)

at java.lang.Class.forName(Unknown Source)

at ognl.OgnlRuntime.(OgnlRuntime.java:162)

 39 more

24/01/2011 19:08:54 org.apache.catalina.core.StandardContext filterStart

GRAVE: Exception starting filter struts2

java.lang.reflect.InvocationTargetException - Class: com.opensymphony.xwork2.inject.ContainerImpl$MethodInjector

File: ContainerImpl.java

Method: inject

Line: 295 - com/opensymphony/xwork2/inject/ContainerImpl.java:295:-1

at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:428)

at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:69)

at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:51)

at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:295)

at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422)

at org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:115)

at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3838)

at org.apache.catalina.core.StandardContext.start(StandardContext.java:4488)

at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)

at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)

at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)

at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)

at org.apache.catalina.core.StandardService.start(StandardService.java:519)

at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)

at org.apache.catalina.startup.Catalina.start(Catalina.java:581)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)

at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

Caused by: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException

at com.opensymphony.xwork2.inject.ContainerImpl$MethodInjector.inject(ContainerImpl.java:295)

at com.opensymphony.xwork2.inject.ContainerImpl$ConstructorInjector.construct(ContainerImpl.java:431)

at com.opensymphony.xwork2.inject.ContainerBuilder$5.create(ContainerBuilder.java:207)

at com.opensymphony.xwork2.inject.Scope$2$1.create(Scope.java:51)

at com.opensymphony.xwork2.inject.ContainerBuilder$3.create(ContainerBuilder.java:93)

at com.opensymphony.xwork2.inject.ContainerBuilder$7.call(ContainerBuilder.java:487)

at com.opensymphony.xwork2.inject.ContainerBuilder$7.call(ContainerBuilder.java:484)

at com.opensymphony.xwork2.inject.ContainerImpl.callInContext(ContainerImpl.java:574)

at com.opensymphony.xwork2.inject.ContainerBuilder.create(ContainerBuilder.java:484)

at com.opensymphony.xwork2.config.impl.DefaultConfiguration.createBootstrapContainer(DefaultConfiguration.java:252)

at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:193)

at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:66)

at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:371)

at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:415)

 20 more

Caused by: java.lang.reflect.InvocationTargetException

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at com.opensymphony.xwork2.inject.ContainerImpl$MethodInjector.inject(ContainerImpl.java:293)

 33 more

Caused by: java.lang.ExceptionInInitializerError

at com.opensymphony.xwork2.ognl.OgnlValueStackFactory.setContainer(OgnlValueStackFactory.java:85)

 38 more

Caused by: java.lang.IllegalArgumentException: Javassist library is missing in classpath! Please add missed dependency!

at ognl.OgnlRuntime.(OgnlRuntime.java:165)

 39 more

Caused by: java.lang.ClassNotFoundException: javassist.ClassPool

at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1516)

at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1361)

at java.lang.Class.forName0(Native Method)

at java.lang.Class.forName(Unknown Source)

at ognl.OgnlRuntime.(OgnlRuntime.java:162)

 39 more

24/01/2011 19:08:54 org.apache.catalina.core.StandardContext start

GRAVE: Error filterStart

24/01/2011 19:08:54 org.apache.catalina.core.StandardContext start

GRAVE: Context [/Struts2] startup failed due to previous errors

24/01/2011 19:08:54 org.apache.catalina.loader.WebappClassLoader clearThreadLocalMap

GRAVE: A web application created a ThreadLocal with key of type [null] (value [com.opensymphony.xwork2.inject.ContainerImpl$10@6986dda3]) and a value of type [java.lang.Object[]] (value [[Ljava.lang.Object;@15412e75]) but failed to remove it when the web application was stopped. To prevent a memory leak, the ThreadLocal has been forcibly removed.

Dai me falaram que pode-se inserir os JAR’s clicando com o botão direito no projeto -> Build Path -> Configure Build Path e na aba Libraries seleciono o Add External JAR’s e adiciono os JAR’s da pasta lib

Aparece o mesmo erro: Status 404
Message

Quando é compilado no console o erro é diferente:
ERRO:

24/01/2011 18:19:43 org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre6\bin;.;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Program Files\Dell\DW WLAN Card;c:\Program Files\WIDCOMM\Bluetooth Software;c:\Program Files\WIDCOMM\Bluetooth Software\syswow64;c:\Program Files (x86)\Common Files\Roxio Shared\DLLShared
24/01/2011 18:19:43 org.apache.tomcat.util.digester.SetPropertiesRule begin
AVISO: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property ‘source’ to ‘org.eclipse.jst.jee.server:Struts2’ did not find a matching property.
24/01/2011 18:19:43 org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
24/01/2011 18:19:43 org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 699 ms
24/01/2011 18:19:43 org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
24/01/2011 18:19:43 org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.26
24/01/2011 18:19:43 org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Deploying configuration descriptor host-manager.xml
24/01/2011 18:19:44 org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Deploying configuration descriptor manager.xml
24/01/2011 18:19:44 org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory docs
24/01/2011 18:19:44 org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory examples
24/01/2011 18:19:44 org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: contextInitialized()
24/01/2011 18:19:44 org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextInitialized()
24/01/2011 18:19:44 org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory ROOT
24/01/2011 18:19:44 org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
24/01/2011 18:19:44 org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8009
24/01/2011 18:19:44 org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/19 config=null
24/01/2011 18:19:44 org.apache.catalina.startup.Catalina start
INFO: Server startup in 970 ms
24/01/2011 18:48:25 org.apache.catalina.loader.WebappClassLoader modified
INFO: Additional JARs have been added
24/01/2011 18:48:25 org.apache.catalina.core.StandardContext reload
INFO: Reloading this Context has started

3 Respostas

lazaropj

Já aconteceu isso comigo
Faltou um Jar q não está no struts 2 do site…
é o javassist-3.7.ga.jar

http://mirrors.ibiblio.org/pub/mirrors/maven2/jboss/javassist/3.7.ga/javassist-3.7.ga.jar

Baixa aí e coloca junta com as outras…
atualiza o projeto e roda novamente…
acho q isso vai arrumar

lazaropj

Olha o erro aí…

Caused by: java.lang.IllegalArgumentException: Javassist library is missing in classpath! Please add missed dependency!
rodrigofarantes

Travei hoje no exercio da caelum e consegui resolve-lo bravamente.
Suei :shock:

Segue o endereço que resolveu minha vida

http://grupohaw.com.br/2010/03/29/problema-para-rodar-o-struts-2/

Estou terminando o sisteminha de cadastramento de tarefas :lol:

Abraços :smiley:

Criado 25 de janeiro de 2011
Ultima resposta 6 de nov. de 2011
Respostas 3
Participantes 3