O seu problema é bem simples, na verdade. Você só precisa entender a
arquitetura de um serviço pra encontrar ele:

1. O Cliente faz uma requisição ao servidor pelo método setNome do serviço
Service.

1.1. O servidor cria um objeto do tipo Service e chama seu método setNome,
passando os parâmetros desejados

1.2. O servidor atribui "abc" à variavel privada nome, e não retorna valor
(Afinal, é um método que não retorna valor)

1.3. O servidor termina o serviço com sucesso e remove a instância de todas
as variáveis da memória (ou não, no caso do java... Mas isso não vem ao
caso.).

1.4. O cliente recebe a confirmação da execução do serviço e continua seu
trabalho.

2. Agora o cliente precisa chamar o método salvar() do mesmo serviço, logo
ele faz a requisição ao servidor.

2.1. O servidor cria um *NOVO* (ou não, mas não vem ao caso) objeto do tipo
Sevice e chama seu método salvar().

2.2. Agora o servidor começa a executar o método salvar(), mas já não possui
mais o valor da variável nome. Logo ele dá problema.

tl;dr: Cada chamada ao servidor é executada ou por um objeto recém
instanciado, ou por um objeto "zerado" (Com suas variáveis resetadas ao
estado inicial). Por isso você deve passar tudo que você vai precisar na
mesma requisição (ou usar sessões para fazer o trabalho, mas aí você vai
sofrer um problema de performance, pois para um objeto com 10 atributos,
precisa de 11 requisições para executar uma operação.).


A solução para o seu problema está em transformar:

class Service {
    private String nome;
    public void setNome(String nome) {
        this.nome = nome;
    }
    public void salvar() {
        /* operações de banco aqui */
    }
}

Em:

class Service {
    public void salvar(String nome) {
        /* operações de banco aqui */
    }
}


Pode parecer meio feio, mas é a única solução. Se você quiser manter as
coisas mais organizadas, faça um facade que usa os métodos da classe que
você já tem, pra não misturar a implementação específica de SoA com as
implementações do seu Software.

2009/6/2 Cristian G <cris-...@hotmail.com>

>
> Já agradeço as respostas...
>
> criei uma classe AS como espelho, eu instancio ela, já imprimi os
> dados e estão passando todos certo, tentei primeiro fazer uma classe
> de serviço e uma DAO, então a de serviço recebe o objeto da classe AS,
> tudo certo com os dados, mas na hora de instanciar a classe DAO
> simplismente para, não da erro, nem funciona para alí, se adicionar um
> system.out em baixo não sera executado, tentei enviar direto para o
> DAO, mas acontece o mesmo problema, não sei se não tratei o erro ou se
> é algum outro problema.
>
> a classe DAO:
>
>
> package DAO;
>
> import java.sql.Connection;
> import java.sql.PreparedStatement;
> import java.sql.ResultSet;
> import java.sql.SQLException;
> import java.util.ArrayList;
> import java.util.List;
>
> import entidades.Cor;
>
> public class CorDAO {
>        private Conexao conexao = Conexao.getInstance();
>
>        private static final String INCLUIR = "insert into cor(nome) values
> (?)";
>        private static final String EXCLUIR = "DELETE FROM cor WHERE CODIGO
> = ?";
>        private static final String ALTERAR = "UPDATE cor SET nome=? WHERE
> codigo = ?";
>        private static final String BUSCAR = "SELECT * FROM cor WHERE CODIGO
> = ?";
>        private static final String BUSCAR_TODOS = "SELECT * FROM cor ORDER
> BY codigo";
>
>        public boolean incluir(Cor cor) throws SQLException{
>                System.out.println ("aqui5");
>                Connection conn = null;
>                PreparedStatement stmt = null;
>                try {
>                        conn = conexao.open();
>                        stmt = conn.prepareStatement(INCLUIR);
>                        stmt.setString(1, cor.getNome());
>                        stmt.executeUpdate();
>                        return true;
>                } catch (SQLException e) {
>                        throw new SQLException("Não foi possível gravar no
> banco.
> \n"+e.getMessage());
>                } finally {
>                        conexao.close(conn, stmt);
>                }
>        }
>
>        public boolean excluir(Cor cor) throws SQLException{
>                Connection conn = null;
>                PreparedStatement stmt = null;
>                try {
>                        conn = conexao.open();
>                        stmt = conn.prepareStatement(EXCLUIR);
>                        stmt.setInt(1,cor.getCodigo());
>                        stmt.executeUpdate();
>                        return true;
>                } catch (SQLException e) {
>                        throw new SQLException("Não foi possível gravar no
> banco.
> \n"+e.getMessage());
>                } finally {
>                        conexao.close(conn, stmt);
>                }
>        }
>
>        public boolean alterar(Cor cor) throws SQLException{
>                Connection conn = null;
>                PreparedStatement stmt = null;
>                try {
>                        conn = conexao.open();
>                        stmt = conn.prepareStatement(ALTERAR);
>                        stmt.setString(1, cor.getNome());
>                        stmt.setInt(2, cor.getCodigo());
>                        stmt.executeUpdate();
>                        return true;
>                } catch (SQLException e) {
>                        throw new SQLException("Não foi possível gravar no
> banco.
> \n"+e.getMessage());
>                } finally {
>                        conexao.close(conn, stmt);
>                }
>        }
>
>
>        public Cor buscar(int codigo) throws SQLException{
>                if (codigo > 0) {
>                        Connection conn = null;
>                        PreparedStatement stmt = null;
>                        ResultSet rs = null;
>                        Cor cor = null;
>                        try {
>                                conn = conexao.open();
>                                stmt = conn.prepareStatement(BUSCAR);
>                                stmt.setInt(1, codigo);
>                                rs = stmt.executeQuery();
>                                while (rs.next()){
>                                        cor = new Cor();
>                                        cor.setCodigo(rs.getInt("codigo"));
>                                        cor.setNome(rs.getString("nome"));
>                                }
>                                if (cor == null)
>                                        throw new SQLException("Produto não
> encontrado.");
>                        } catch (SQLException e) {
>                                throw new SQLException("Não foi possível
> consultar o
> produto."+e.getMessage());
>                        } finally {
>                                conexao.close(conn, stmt, rs);
>                        }
>                        return cor;
>                }
>                return null;
>        }
>
>
>        public List<Cor> buscar_todos() throws SQLException{
>                Connection conn = null;
>                PreparedStatement stmt = null;
>                ResultSet rs = null;
>                List<Cor> cors = null;
>                Cor cor = null;
>                try {
>                        conn = conexao.open();
>                        stmt = conn.prepareStatement(BUSCAR_TODOS);
>                        rs = stmt.executeQuery();
>                        cors = new ArrayList<Cor>();
>                        while (rs.next()){
>                                cor = new Cor();
>                                cor.setCodigo(rs.getInt("codigo"));
>                                cor.setNome(rs.getString("nome"));
>                                cors.add(cor);
>                        }
>                        if (cors.size()<1)
>                                throw new SQLException("Nenhum produto
> cadastrado.");
>                } catch (SQLException e) {
>                        throw new SQLException("Não foi possível consultar o
> produto."+e.getMessage());
>                } finally {
>                        conexao.close(conn, stmt, rs);
>                }
>                return cors;
>        }
>
> }
>
>
> isto dentro do mxml:
>
> <mx:Script>
>                <![CDATA[
>                        import mx.controls.Alert;
>                        import mx.rpc.events.ResultEvent;
>                import mx.rpc.remoting.RemoteObject;
>                var service2:RemoteObject = new RemoteObject("servico");
>                import mx.managers.PopUpManager;
>                import mx.controls.Button;
>                import mx.events.FlexEvent;
>                import mx.events.FlexMouseEvent;
>                import CadastroCor;
>                var corAS:CorAS;
>
>                public function SalvaAsD():void{
>                        this.corAS = new CorAS();
>                        this.corAS.nome = tinome.text;
>                        service2.addEventListener(ResultEvent.RESULT,
>                        function(event:ResultEvent):void{
>                                status = "Salvo com Sucesso!"; //Status do
> TitleWindow
>                        }
>                        );
>                        Alert.show("Nome: " + corAS.nome);
>                        service2.incluir(corAS);
>                }
>
>
>                        //service2.setNome(tinome.text);
>
>
>                ]]>
>        </mx:Script>
>
>
>
> On 2 jun, 09:47, Cristian Edson Göhl <cris-...@hotmail.com> wrote:
> > opa, tenho um formulário para cadastrar cor, nele tem apenas um textinput
> para o nome da cor, estou utilizando amf, no remoting-config esta tudo certo
> com a entidade Cor...
> >
> > no meu mxml tenho uma função:
> >
> > public function SalvaAsD():void{
> >
> > service2.Salvar();
> >
> > service2.setNome(tinome.text);
> >
> > }
> >
> > o salvar esta antes do setnome apenas para testar se entra nele...
> >
> > o botão salvar chama essa função, e o textinput é o tinome...
> >
> > na entidade Cor tenho:
> >
> > public void setNome(String nome) {
> >
> > this.nome = nome;
> >
> > System.out.println (nome);
> >
> > }
> >
> > isso está funcionando, o nome esta passando e retornado, tudo certo...
> >
> > mas o salvar:
> >
> > public void Salvar(){
> >
> > System.out.println ("Entrou Salvar");
> >
> > CorDAO corDAO = new CorDAO();
> >
> > Cor cor = new Cor();
> >
> > try {
> >
> > corDAO.incluir(cor);
> >
> > System.out.println ("O Nome: " + cor.nome);
> >
> > } catch (SQLException e) {
> >
> > // TODO Auto-generated catch block
> >
> > e.printStackTrace();
> >
> > }
> > }
> >
> > Não chega nem a mostrar "Entrou Salvar" ...
> >
> > Alguém pode me auxiliar com esse problema?
> >
> > Obrigado...
> >
>

--~--~---------~--~----~------------~-------~--~----~
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com
Para sair da lista, envie um email em branco para 
flexdev-unsubscr...@googlegroups.com
Mais opções estão disponíveis em http://groups.google.com/group/flexdev
-~----------~----~----~----~------~----~------~--~---

Responder a