Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    3

    [JAVA-J2EE]Come fare un applicazione j2ee+jboss n-tier^

    Ciao a tutti.
    Sono un principiante in J2EE, ma sono riuscito a fare un piccolo progetto con bean statless, bean entità e MySQL.
    Sono in grado di eseguire il progetto sul mio pc ma non so come fare per eseguirlo su 2 o più pc per vedere la J2EE multi-tier in azione.
    Se qualcuno potrebbe dirmi i passaggi per farlo o mi può dire qualche guida o libro da leggere li sarei molto grato.
    Incollo il mio codice e l'immagine dell'organizzazione del mio progetto.Grazie



    codice:
       
    
    BookBank.java
    
    //Questa è la classe che rispecchia una tabella chiamata bookbank nel mio database
    package entity.library;
    
    //librerie importate neccessarie per la classe
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue; 
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.Table;
    import java.util.Collection;
    import javax.persistence.*;
    import java.io.Serializable;
    
    //qua dichiaro che si tratta di un bean entity
    @Entity
    //dichiaro che rispecchia una tabela che si chiama bookbank
    @Table(name="bookbank")
    //La serializzazione serve a convertire un insieme di oggetti,
    //che contengono referenze ad altri oggetti, in un flusso(stream) di bytes.
    public class BookBank implements Serializable {
    
    	
    //qua dichiaro le variabilli che corispondono ai campi della mia tabella	
      long id;
      String title;
      String author;
      double price;
    
      //protected Collection <LineItems> lineitems;
    
      public BookBank() {
        super();
      }
    
      
      //qua dichiaro il costruttore del entity bean
      public BookBank(String title, String author, double price) {
        super();
        this.title = title;
        this.author = author;
        this.price = price;
      }
    //dichiaro che questa variabile rimpiazza l'id della tabella e che esso verrà generato automaticamente
      @Id
      @GeneratedValue(strategy=GenerationType.AUTO)
         // Getter and setter methods for the defined properties..("come dice il comento sono getter e setter per le nostre variabili")
    
      public long getId() {
        return id;
      }
      public void setId(long id) {
        this.id = id;
      }
    
      public String getTitle() {
        return title;
      }
      public void setTitle(String title) {
        this.title = title;
      }
    
      public String getAuthor() {
        return author;
      }
    
      public void setAuthor(String author) {
        this.author = author;
      }
    
      public double getPrice() {
        return price;
      }
      public void setPrice(double price) {
        this.price = price;
      }
    
    }
    
    BookCatalogBank.java
    
    //questo e una session bean statless che mi servirà per comunicare con la entity bean e poi con la web application
    
    package entity.library;
    
    //librerie che mi servono per la classe
    import java.io.Serializable;
    import java.util.Collection;
    
    import javax.ejb.Remote;
    import javax.ejb.Stateless;
    import javax.persistence.EntityManager;
    import javax.persistence.PersistenceContext;
    
    //dichiaro che si tratta di un bean statless  e dichiaro come si chiama la sua interfaccia che è di tipo remote
    @Remote(BookCatalogInterface.class)
    @Stateless
    
    //La serializzazione serve a convertire un insieme di oggetti,
    //che contengono referenze ad altri oggetti, in un flusso(stream) di bytes.
    //dichiaro anche che implementa la sua interfaccia
    public class BookCatalogBean  implements Serializable, BookCatalogInterface {
    		/**
    	 * 
    	 */
    	private static final long serialVersionUID = 1L;
    		//dichiaro una classe che con i suoi metodi tiene traccia del ciclo di vita di ogni singola entity bean
    	//in questo caso dichiaro anche l'entity bean a cui legarlo("il nome del entity bean viene assegnato 
    	//nel file  persistence.xml
    	@PersistenceContext(unitName="EntityBean")
    		//dichiaro una ogetto di tipo entitymanager con cui farò tutte le operazioni sull database 
    	//"CRUD(Create,Read,Update,Delete"
    		EntityManager em;
    	//creo un ogetto di tipo BookBank
    	protected  BookBank book;
    		//creo una collezione di oggetti di tipo BookBank
    	protected Collection<BookBank> bookList;
    		//dichiaro il metodo per scrivere nel nostro entity bean un nuovo record
    	//dopo di che viene scrito anche sul database con "merge"
    		public void addBook(String title, String author, double price) {
    			//initialize the form
    			if (book==null)
    				book=new BookBank(title,author,price);
    			em.merge(book);
    		}
    		
    		//dichiaro il metodo per leggere tutti i record dalla entity bean e quindi dalla nostra tabella
    		//ritorna una collezione di oggetti di tipo BookBank
    		//em.createQuery per creare una query 
    		@SuppressWarnings("unchecked")
    		public Collection<BookBank>getAllBooks(){
    			//nella query si usa la entity bean come nominativi di tabelle e campi non la tabella del database
    			bookList=em.createQuery("select a from BookBank a").getResultList();
    		return bookList;
    		}
    		
    
    }
    
    BookCatalogInterface.java
    
    //interfaccia che contiene i metodi che fanno da interfaccia per il bean statless
    
    package entity.library;
    import java.util.Collection;
    import javax.ejb.Remote;
    
    //dichiaro che la interfaccia è di tipo remote
    @Remote
    public interface BookCatalogInterface {
    		public void addBook(String title,String author, double price);
    	public Collection <BookBank> getAllBooks();
    }
    
    persistence.xml
    
    <?xml version="1.0" encoding="UTF-8"?>
           <persistence
       
          xmlns="http://java.sun.com/xml/ns/persistence"
       
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       
          xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
       
          http://java.sun.com/xml/ns/persisten...stence_1_0.xsd"
       
          version="1.0">
       		
          <persistence-unit name="EntityBean">
       	<jta-data-source>java:/DefaultDS</jta-data-source>
          <properties>
      
          <!--
      
          <property name="hibernate.ejb.cfgfile" value="/hibernate.cfg.xml"/>
           <property name="hibernate.hbm2ddl.auto" value="create"/>
      
          -->
      
          <property name="hibernate.archive.autodetection" value="class, hbm"/>
      
          <property name="hibernate.show_sql" value="true"/>
      
          <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
      
          <property name="hibernate.connection.password" value="javaset"/>
      
          <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/library"/>
      
          <property name="hibernate.connection.username" value="root"/>
      
          <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
      
          <property name="hibernate.c3p0.min_size" value="5"/>
      
          <property name="hibernate.c3p0.max_size" value="20"/>
      
          <property name="hibernate.c3p0.timeout" value="300"/>
      
          <property name="hibernate.c3p0.max_statements" value="50"/>
      
          <property name="hibernate.c3p0.idle_test_period" value="3000"/>
      
          </properties>
      
          </persistence-unit>
      
          </persistence>
    
    index.jsp
    
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>    
    <%
    //pagina di index("quindi la prima che verrà visualizzata quando facciamo il deploy
    //questa pagina JSP semplicemente reindirizzierà a un altra pagina JSP che si occuperà di raccogliere i dati %>
    <!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>Ejb3 JPA Tutorial</title>
    </head>
    <body bgcolor="#FFFFCC">
    <p align="center">
    <font size="6" color="#800000">
    Welcome to
    </br>
    Ejb3-Jboss 4.2.0 Tutorial</font>
    ClickBook Catalog Example
    to execute Library
    </br></p>
    </body>
    </html>
    
    form.jsp
    
    <%
    //pagina JSP che contiene una form che indirizza alla pagina JSP che si occupera della conessione
    //con la nostra applicazione e processera i dati
    %>
    
    <%@ 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>
    <title>Library</title>
    </head>
    
    <body bgcolor="pink">
    <h1>Library</h1>
    <hr>
    
    <form action="WebClient.jsp" method="POST">
    
    
    Enter the Title:
    <input type="text" name="t1" size="25"></p>
    
    
    
    
    Enter Author name:
    <input type="text" name="aut" size="25"></p>
    
    
    
    
    Enter Price:
    <input type="text" name="price" size="25"></p>
    
     
    
    
    
    
    <input type="submit" value="Submit">
    <input type="reset" value="Reset"></p>
    
    </form>
    </body>
    </html>
    
    WebClient.jsp
    
    <%//è la pagina jsp che effetua il collegamento con il bean statless tramite il remote e usa i metodi della bean 
    //per inserire i dati dentro il database e leggerli%>
    
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
        <%@page import="entity.library.*,javax.naming.*,java.util.*,javax.naming.*,java.util.*,javax.sql.DataSource,java.sql.*"
            %>
        
        <%!
        //dichiaro un oggetto di tipo "interfaccia del bean" settato a nullo
        private BookCatalogInterface bci=null;
        String s1,s2,s3;
        Collection list;
       
        	public void jspInit() {
        	
        		
        //faccio la conessione al bean statless remote tramite il lookup 
        	try {
        			InitialContext ic= new InitialContext();
        	bci=(BookCatalogInterface) ic.lookup("BookCatalogBean/remote");
        	
        	System.out.println("Loaded Bank bean");
        	} catch (Exception ex){
        		System.out.println("Error"+ex.getMessage());
        	}
        	
        	}
        	
        	public void jspDestroy(){
        		bci=null;
        	}
        	%>
        	
        	
        		<%
        		//ricevo i dati della pagina jsp precedente e richiamo il metodo per aggiungere i dati 
        		//al entity bean e quindi alla tabella tramite la interfaccia 
        		try {
        			
        			s1=request.getParameter("t1");
        			s2=request.getParameter("aut");
        			s3=request.getParameter("price");
        			
        				if( s1!=null&&s2!=null&&s3!=null){
        					Double price=new Double(s3);
        					bci.addBook(s1,s2,price.doubleValue());
        				System.out.println("Record added:");
        				%>
        				
    
    </p>
        				Record added
    					
    
    </p>
    	    				
    	    				<%}
        				//richiamo il metodo per leggere tutti i campi del entity bean e quindi della tabella
        				//tramite la interfaccia e dopo  dalla lista stampo tutti i record
        				list=bci.getAllBooks();
        				for (Iterator iter=list.iterator();iter.hasNext();){
        					BookBank element=(BookBank)iter.next();
        					%>
        					
    
        					
    
    Book ID: <%=element.getId() %></p>
        					
    
    Title: <%=element.getTitle() %></p>
        					
    
    Author: <%=element.getAuthor() %></p>
        					
    
    Price: <%=element.getPrice() %></p>
        					<%
        				}
        			
        		}//end of try
        		catch (Exception e){
        			e.printStackTrace();
        		}
        		%>

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Moderazione

    Sposto nel forum dedicato a Java.
    In futuro, posta le discussioni su Java nel forum corretto.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    3
    Grazie, non ho visto proprio che ci fosse un forum dedicato a java.

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    3
    Visto che nessuno mi ha risposto, provo a spiegare meglio il mio problema.
    Su una macchina con indirizzo ip 10.1.100.183 faccio partire la parte logica del progetto J2ee tramite il comando run.bat -b 0.0.0.0, in un altra macchina che è in rete con la prima faccio partire sempre con lo stesso procedimento la parte client, il problema è che non riesco a capire come fare a comunicare la parte client con la parte logica del programma, forse devo impostare i jndi properties in modo diverso.Perfavore qualcuno mi può dare una mano.

    Faccio vedere il pezzo dei properties della parte client e l'errore che mi da quando cerco ad accedere al session bean nella parte logica.




    Properties


    codice:
    public void jspInit() {
    	
    	 //faccio la conessione al bean statless remote tramite il lookup 
        	try {
    		Properties prop = new Properties();
    		prop.put(Context.INITIAL_CONTEXT_FACTORY,
    		"org.jnp.interfaces.NamingContextFactory");
    		prop.put(Context.URL_PKG_PREFIXES,"org.jboss.naming:org.jnp.interfaces.NamingContext");
    		prop.put(Context.PROVIDER_URL, "jnp://10.1.100.183:1099");
        	InitialContext ic= new InitialContext(prop);
        	private BookCatalogInterface bci=(BookCatalogInterface) ic.lookup("BookCatalogBean/remote");
        	
        	System.out.println("Loaded Bank bean");
        	} catch (Exception ex){
        		System.out.println("Error"+ex.getMessage());
        	}
        	
        	}

    Errore:







    codice:
    org.apache.jasper.JasperException: Unable to compile class for JSP: 
    
    An error occurred at line: 28 in the jsp file: /WebClient.jsp
    Illegal modifier for the variable bci; only final is permitted
    25: 		prop.put(Context.URL_PKG_PREFIXES,"org.jboss.naming:org.jnp.interfaces.NamingContext");
    26: 		prop.put(Context.PROVIDER_URL, "jnp://10.1.100.183:1099");
    27:     	InitialContext ic= new InitialContext(prop);
    28:     	private BookCatalogInterface bci=(BookCatalogInterface) ic.lookup("BookCatalogBean/remote");
    29:     	
    30:     	System.out.println("Loaded Bank bean");
    31:     	} catch (Exception ex){
    
    
    An error occurred at line: 38 in the jsp file: /WebClient.jsp
    bci cannot be resolved
    35:     	}
    36:     	
    37:     	public void jspDestroy(){
    38:     		bci=null;
    39:     	}
    40: 	
    41:

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.