2014-05-15 5 views
0

개체를 내 RMI에서 보내지 만 null 값을 찾습니다.개체가 내 RMI 서버에서 null입니다.

Client.java :

service.InterfaceMathML stub = (service.InterfaceMathML) Naming.lookup("rmi://localhost:1099/BK"); 

System.out.println("id : " +this.MTI_creerFichier.getId()); // Show 10 


     int ValRetour = stub.Create(this.MTI_creerFichier, this.MTI_creerFichier.getId(), "CreateFichier"); 

내 인터페이스 :

import java.rmi.Remote; 
import java.rmi.RemoteException; 

public interface InterfaceMathML extends Remote{ 
    public int Create(Object unObject,String user, String unType)throws RemoteException; 
} 

내 서버 :

public int Create(Object unObject, String user, String unType) throws RemoteException { 
     // TODO Auto-generated method stub 

     switch(unType) 
     { 
     case "CreateFichier" : 
         System.out.println("Create Fichier"); 
      System.out.println((CreateFichier)unObject.getId()); // show Null 
ystem.out.println(user); // show userTest 
       FichierImpl = new JDBCDAO_Fichier(); 
       this.validation = FichierImpl.Validation_ADD((CreateFichier)unObject, user); 
       if (this.validation == 1) { this.entier = FichierImpl.add((CreateFichier)unObject, user); } 
       else { this.entier = this.validation; } 
      break; 

그렇게 할 수없는 내 Object가 서버에 널 (null) I를 왜?

제발 도와주세요.

편집

내 RMI 서버

public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     String url = "rmi://localhost:1099/BK"; 

     try { 
      LocateRegistry.createRegistry(1099); 
      MathMLServiceImpl od = new MathMLServiceImpl(); 

      // je met a dispo un objet dans un url 
      Naming.rebind("rmi://localhost:1099/BK", od); 
      System.out.println("Service pret"); 
     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

    } 

내 CLientRMI (내 serverRMI에) 내 MAINTestServer.java

od = new MathMLServiceImpl() CreateFichier fi = new CreateFichier(); 
      fi.setLogin("test");   fi.setDossierParent("dossierparenttest"); 
      fi.setNomFichier("nomfichiertest"); 
      fi.setContenuFichier("essaie"); 

      int val = od.Create(fi, "test", "CreateFichier"); System.out.println(val); 

그것은의 작품에서 : 내가 다형성을 사용 lanch하기 클래스가 내 수업을 검색합니다 :

Class<?> actionClass = Class.forName("metierToInte." + nomDto + "Action"); 
      System.out.println(actionClass); 


      Constructor<?> actionConstructe = actionClass.getConstructor(dto.getClass()); //dto.getClass() 
      System.out.println("constructeur : " + actionConstructe.toString()); 
      ActionInteToMetier uneActione = (ActionInteToMetier) actionConstructe.newInstance(dto); 


      System.out.println("action : " + uneActione.toString()); 
      //System.out.println("action : " + uneActione.toString()); 
      uneActione.executer(); 

이 exemple 내 수업 "CreateFichierAction"에 대한 작품은, 나는 그것이 작동하지만 나의 목적 문자열을 보낼 수있어

this.MTI_creerFichier = creerFichier; 
service.InterfaceMathML stub = (service.InterfaceMathML) Naming.lookup("rmi://localhost:1099/BK"); 

System.out.println("id : " +this.MTI_creerFichier.getId()); // Show 10 
     int ValRetour = stub.Create(this.MTI_creerFichier, this.MTI_creerFichier.getLogin(), "CreateFichier"); 
     System.out.println("valeur retour rmi " + ValRetour); 

soucr : CreerFichier

package dto.metierToInte; 

import java.io.Serializable; 

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlType(name = "") 
@XmlRootElement(name = "CreateFichier") 
public class CreateFichier 
    extends Fichier 
    implements Serializable 
{ 

    private static final long serialVersionUID = 1L; 
    @XmlAttribute(name = "id") 
    protected int id; 

    public String getId() { 
     return id; 
    } 
} 

그렇지 않은 경우, 작업의 만 내 RMI CLIENT

답변

1

귀하의 개체가 null이 아닙니다. 나가는 ID 만 null

System.out.println((CreateFichier)unObject.getId()); 

unObject가 null 인 경우 NullPointerException이 발생해야합니다. getId() 부분을 확인하십시오.

+0

이 작업을 수행합니다. CreateFichier val = (dto.metierToInte.CreateFichier) unObject; System.out.println (val.getId()); /// show null – Hann

+1

다시 객체가 null이 아닙니다. getNomFichier()가 null을 반환합니다. – Sanjeev

+0

mainTest로 서버에 Lanch 객체가 있으면 작동합니다.하지만 내 RMI 클라이언트에 객체를 안치하면 null입니다. – Hann