[jboss-user] [JBoss Seam] - Re: Trouble W/ NullPointerException

nathandennis do-not-reply at jboss.com
Mon Dec 17 10:31:29 EST 2007


i actually already tried that. but the entity manager is still null. im starting to wonder if it is a bug. this version is cvs 11/15/07. here is an updated code snippet. 

  | @Stateful
  | @Name("uploadAction")
  | @Scope(ScopeType.SESSION)
  | public class FileUploadAction implements FileUploadLocal, Serializable{
  | 	
  | 	@PersistenceContext
  | 	private EntityManager entityManager;
  | 	
  | 	@Logger
  | 	private Log log;
  | 	
  | 	FtpRemote send;
  | 	
  | 	@Out(required=false)
  | 	private Media media;
  | 	
  | 	private String medianame;
  | 	private Long size;
  | 	private String userid;
  | 	private String comment;
  | 	private String server;
  | 	private String url;
  | 	private String filetype;
  | 	private Date dob;
  | 	private Long mark;
  | 	private FileInputStream fis;
  | 	private byte[] is;
  | 	
  | 	public void UploadFile() throws NullPointerException {
  | 		
  | 			
  | 		if(!medianame.equals("")){
  | 			try{
  | //			create empty file with specified name and path   
  | 					File os = new File("/var/temp/filewritetemp/"+getMediaName());
  | 						FileOutputStream oStream =new FileOutputStream(os);
  | 						oStream.write(getIs());
  | 						
  | 
  | 						
  | 						
  | 						File file = new File("/var/temp/filewritetemp/" + getMediaName());
  | 					    size = file.length();
  | 					    dob = new Date();
  | 					    fis = new FileInputStream("/var/temp/filewritetemp/" + getMediaName());
  | 					    try{					    
  | 					    	ftpFile(fis);
  | 					    	
  | 						    Media media = new Media();
  | 						    media.setServer(server);
  | 						    media.setUrl(url);
  | 						    media.setDob(dob);
  | 						    media.setFiletype(filetype);
  | 						    media.setMark(mark);
  | 						    media.setMedianame(medianame);
  | 						    media.setSize(size);
  | 						    media.setUserid(userid);
  | 						    entityManager.persist(media);
  | 					    }catch (Exception e){
  | 					    	e.printStackTrace();
  | 					    }
  | 					    file.delete();
  | //					    Media media = ;
  | /*					    media.setServer(server);
  | 					    media.setUrl(url);
  | 					    media.setDob(dob);
  | 					    media.setFiletype(filetype);
  | 					    media.setMark(mark);
  | 					    media.setMedianame(medianame);
  | 					    media.setSize(size);
  | 					    media.setUserid(userid);
  | 					    entityManager.persist(media);
  | */					    destroy();
  | 					   
  | 				} catch(Exception e){
  | 					e.printStackTrace();
  | 					
  | 				}
  | 		}
  | 	}
  | 		public void ftpFile(FileInputStream fis){
  | 		send = new FtpRemote(); //action starts
  | 		send.findServer(fis);
  | 	}
  | ...
  | 
now to process the file..


  | 
  | @Stateful
  | @Name("ftpRemote")
  | public class FtpRemote implements FtpRemoteLocal, Serializable {
  | 	  /**
  | 	  */
  | 	private String login;
  | 	private String password;
  | 	private String directory;
  | 	private String path;
  | 	private String filename;
  | 	private String server;
  | 	private Long serverid;
  | 	private Long usedspace;
  | 	private int reply;
  | 	private int replywrite;
  | 	private byte[] filestream;
  | 	private boolean successflag;
  | 	
  | 	@PersistenceContext
  | 	private EntityManager entityManager;
  | 	
  | 	   @In(required=false) 
  | 	   @Out(required=false)
  | 	ReturnServer host;
  | 	
  | 	   @In(required=false) 
  | 	   @Out(required=false)
  | 	ReturnServer host2;
  | 	
  | 
  | 	public void findServer(FileInputStream fis){
  | 		host = new ReturnServer(); //return an available server from DB second  action
  | 		server = host.findServer();
  | 		serverid = host.getServerId();
  | 		login = host.getLogin();
  | 		password = host.getPasswd();
  | 		usedspace = host.getUsedSpace();
  | 		successflag = ftpConnect(fis);
  | 		host.destroy();
  | 		for(boolean flag=successflag; flag==true;){
  | 			host2 = new ReturnServer();
  | 			server = host2.findServer();
  | 			serverid = host2.getServerId();
  | 			login = host2.getLogin();
  | 			password = host2.getPasswd();
  | 			usedspace = host2.getUsedSpace();
  | 			host2.destroy();
  | 			flag = ftpConnect(fis);
  | 		}
  | 	}
  | 
the query to return the server is where it is breaking... EM is null for some reason.


  | @Stateful
  | @Name("returnServer")
  | public class ReturnServer implements ReturnServerLocal, Serializable
  | {
  | 	@PersistenceContext 
  |         private	EntityManager entityManager;
  |     
  | 	private String server;
  | 	private ArrayList<Server> serverlist;
  | 	
  | 	private String login;
  | 	private String passwd;
  | 	private Long usedspace;
  | 	private Long serverid;
  | 	private int serverindex;
  | 	private int noavail;
  | 	
  | 	 @Logger private Log log;
  | 	
  | 	@In(create=true)
  | 	private List<Server> result;
  | 	
  | 	@Create
  | 	public String findServer(){
  | 		queryServer();
  | 		requestServer();
  | 		return server;
  | 	}
  | 		
  | 	public void requestServer() {
  | 			int i = 0;
  | 			noavail = serverlist.size();			
  |                         if(serverlist.isEmpty()){
  | 				System.out.println("null query");	
  | 			} else {
  | 			for (i = 0; i == serverlist.size() + 1; i++) {
  | 					if(serverlist.get(i).getUsedspace() 
  | 					  < serverlist.get(i).getTotalspace()) {
  | 						server = serverlist.get(i).getServername();
  | 						login = serverlist.get(i).getLogin();
  | 						passwd = serverlist.get(i).getPasswd();
  | 						serverid = serverlist.get(i).getId();
  | 					}} 
  | 			}
  | 	}
  | 	
  | 	@SuppressWarnings("unchecked")
  | 	public void queryServer() {
  | 		System.out.println("made it to RemoteServer -- before QUERY");
  | 		if(entityManager==null){
  | 			System.out.println("em is null");
  | 		} 
  | 		if(entityManager != null){
  | 			System.out.println("em not null");
  | 		}
  | //		
  | 		try{
  | 			log.info("i am here");
  | 			
  | 		List resultList = entityManager.createQuery("select s from " +
  | 				"Server s where lower (s.status) = :param order by s.usedspace desc")
  | 				.setParameter("param", "online")
  | 				.getResultList();
  | 		serverlist = new ArrayList(resultList.subList(0, resultList.size()));
  | 		}catch (Exception e){
  | 			e.printStackTrace();
  | 		}	
  | 		
  | 		
  | 	}
  | ...

i local interfaces for all. i thought there might have been something i was missing. i cant really find anything similar in the examples and google is really letting me down too.


View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4113430#4113430

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4113430



More information about the jboss-user mailing list