Boa tarde a todos, estou precisando de um auxilio para descobrir a causa desse erro abaixo...
faultCode:Client.Error.MessageSend faultString:'Send failed' faultDetail:'Channel.Connect.Failed error NetConnection.Call.Failed: HTTP: Status 500: url: 'http://localhost:8080/Contatos/messagebroker/amf'' Estou aprendendo a fazer a comunicação do Flex com o java utilizando o blazeds e JBoss, criei o projeto Contatos como Dynamic Web Project, depois adicionei o Flex Project Type, o projeto está na seguinte estrutura... <https://lh3.googleusercontent.com/-s4wbXCs1JQM/UdCcBtM8j_I/AAAAAAAABss/h4Or39k1vU8/s738/Contatos.png> Em Contatos.mxml tenho o seguinte código: <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"> <fx:Declarations> <!-- Place non-visual elements (e.g., services, value objects) here --> <s:RemoteObject id="contato" destination="contato" fault="OnFault(event)"> <s:method name="getAll" result="OnGetAll(event)"/> </s:RemoteObject> </fx:Declarations> <fx:Script> <![CDATA[ import agenda.ContatoVO; import flash.net.registerClassAlias; import mx.controls.Alert; import mx.rpc.events.FaultEvent; import mx.rpc.events.ResultEvent; protected function OnFault(event:FaultEvent):void{ Alert.show(event.fault.message.toString()); } protected function OnGetAll(event:ResultEvent):void{ dgContatos.dataProvider = event.result; } ]]> </fx:Script> <s:creationComplete> <![CDATA[ registerClassAlias("agenda.ContatoVO",agenda.ContatoVO); contato.getAll(); ]]> </s:creationComplete> <mx:DataGrid id="dgContatos" x="10" y="10"> <mx:columns> <mx:DataGridColumn headerText="Nome" dataField="Nome"/> <mx:DataGridColumn headerText="Email" dataField="Email"/> </mx:columns> </mx:DataGrid> </s:Application> em ContatoVO.as tenho o seguinte código: package agenda { [Bindable] [RemoteClass(alias="agenda.ContatoVO")] public class ContatoVO { public var Nome:String; public var Email:String; public var Telefone:String; public var id:int; public function ContatoVO() { } } } em src_java/agenda/ContatoDAO.java tenho o seguinte código: package agenda; import connection.AbstractDAO; //A classe ContatoDAO utiliza as funcionalidades da classe AbstractDAO, presumindo que a classe ContatoVO seja a classe generica <ContatoVO> public class ContatoDAO extends AbstractDAO<ContatoVO> { public ContatoDAO() { super("Contatos"); } } em src_java/agenda/ContatoVO.java tenho o seguinte código: package agenda; public class ContatoVO { public int id; public String Nome; public String Email; public String Telefone; } em src_java/connection/AbstractDAO.java tenho o seguinte código: package connection; import java.lang.reflect.Field; import java.lang.reflect.ParameterizedType; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; //Classe para reakuzar a conexão e manipular o banco de dados, essa classe é abstrata. // T representa uma classe genérica public abstract class AbstractDAO<T> { protected Connection conn = null; protected Statement stm = null; protected Class<T> classVO = null; private String tableName; public AbstractDAO(String tableName){ this.tableName = tableName; /** * usando reflection, obtem a classe que * representa o VO. Usamos issso para obter as variaveis * da classe VO, assim conseguimos criar uma classe VO dinamicamente **/ this.classVO = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0]; Configure(); } private void Configure(){ String jdbcConnString = "jdbc:mysql://localhost:3306/test"; String user = "root"; String pass = "123"; try{ this.conn = DriverManager.getConnection(jdbcConnString, user, pass); this.stm = conn.createStatement(); } catch (SQLException e) { e.printStackTrace(); } } public ArrayList<T> getAll(){ String sql = String.format("SELECT * FROM %s", tableName); return getRowsFromSql(sql); } private ArrayList<T> getRowsFromSql(String sql){ ArrayList<T> rows = new ArrayList<T>(); try{ ResultSet rs = null; rs = this.stm.executeQuery(sql); while (rs.next()){ T newInstanceClassVO = this.classVO.newInstance(); for (Field classVOField : classVO.getDeclaredFields()) { Field classVODinamicField = classVO.getField(classVOField.getName()); classVODinamicField.set(newInstanceClassVO, rs.getObject(classVOField.getName())); } rows.add(newInstanceClassVO); } rs.close(); } catch (SQLException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (SecurityException e) { e.printStackTrace(); } catch (NoSuchFieldException e) { e.printStackTrace(); } return rows; } /** * obtem um registro VO dado um id * @param id o id (chave primaria) do registro * @return o objeto VO se existe de acordo com o ID */ public T getById(int id){ T row = null; String sql = String.format("SELECT * FROM %s where id=%s", tableName, id); ArrayList<T> rows = getRowsFromSql(sql); if (rows.size() == 1) row = rows.get(0); return row; } } no WebContent/WEB-INF/flex/remoting-config.xml tenho o seguinte código: <?xml version="1.0" encoding="UTF-8"?> <service id="remoting-service" class="flex.messaging.services.RemotingService"> <adapters> <adapter-definition id="java-object" class="flex.messaging.services.remoting.adapters.JavaAdapter" default="true"/> </adapters> <default-channels> <channel ref="my-amf"/> </default-channels> <destination id="contato"> <properties> <source>agenda.ContatoDAO</source> </properties> </destination> </service> no argumentos está configurado da seguinte maneira: -locale en_US -services "../WebContent/WEB-INF/flex/services-config.xml" -context-root "Contatos" quando executo tenho o seguinte erro <https://lh4.googleusercontent.com/-aHWRVYlRRiM/UdCb5RdWGlI/AAAAAAAABsk/eBM8n6KRj5E/s490/Contatos+erro.png> 17:56:37,143 ERROR [STDERR] **** MessageBrokerServlet in application 'BlazeDS Samples' failed to initialize due to runtime exception: Exception: flex.messaging.MessageException: Cannot create class of type 'flex.samples.DatabaseCheckService'. Type 'flex.samples.DatabaseCheckService' not found. at flex.messaging.util.ClassUtil.createClass(ClassUtil.java:83) at flex.messaging.MessageBroker.createService(MessageBroker.java:1036) at flex.messaging.config.MessagingConfiguration.createServices(MessagingConfiguration.java:377) at flex.messaging.config.MessagingConfiguration.configureBroker(MessagingConfiguration.java:128) at flex.messaging.MessageBrokerServlet.init(MessageBrokerServlet.java:136) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1048) at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:777) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:129) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190) at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92) at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126) at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Unknown Source) 17:56:37,143 ERROR [[MessageBrokerServlet]] Allocate exception for servlet MessageBrokerServlet flex.messaging.MessageException: Cannot create class of type 'flex.samples.DatabaseCheckService'. Type 'flex.samples.DatabaseCheckService' not found. at flex.messaging.util.ClassUtil.createClass(ClassUtil.java:83) at flex.messaging.MessageBroker.createService(MessageBroker.java:1036) at flex.messaging.config.MessagingConfiguration.createServices(MessagingConfiguration.java:377) at flex.messaging.config.MessagingConfiguration.configureBroker(MessagingConfiguration.java:128) at flex.messaging.MessageBrokerServlet.init(MessageBrokerServlet.java:136) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1048) at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:777) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:129) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190) at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92) at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126) at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Unknown Source) Pessoal me ajuda.... obrigado.... -- -- Você recebeu esta mensagem porque está inscrito na lista "flexdev" Para enviar uma mensagem, envie um e-mail para [email protected] Para sair da lista, envie um email em branco para [email protected] Mais opções estão disponíveis em http://groups.google.com/group/flexdev --- Você está recebendo esta mensagem porque se inscreveu no grupo "flexdev" dos Grupos do Google. Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [email protected]. Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
