Tutorial for netbeans
Upcoming SlideShare
Loading in...5
×
 

Tutorial for netbeans

on

  • 883 views

 

Statistics

Views

Total Views
883
Views on SlideShare
883
Embed Views
0

Actions

Likes
1
Downloads
17
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Tutorial for netbeans Tutorial for netbeans Document Transcript

  • Choose page language Search:HOME / Docs & Support / NetBeans 5.5EJB 3.0 Enterprise Beans Learning TrailsThis document takes you through the basics of developing an enterprise application using EJB 3.0 Basic Java Programmingtechnology which is part of the Java EE 5 platform. This document shows how the EJB 3.0 Java GUIs and Project Matissetechnology can simplify the process of developing enterprise applications. This document uses the Web ApplicationsNetBeans IDE 5.5 Release. Java EE Applications Expected duration: 30 minutes Mobile Applications SOA Applications and UML Prerequisites NetBeans Modules and Rich- This document assumes you have some basic knowledge of, or programming experience with, Client Applications the following technologies: Java Programming Docs for Packs NetBeans IDE Mobility Pack Visual Web Pack Software Needed for the Tutorial Enterprise Pack For this tutorial you need to have the following software installed on your computer: C/C++ Pack NetBeans IDE 5.5 (download). Profiler Java Standard Development Kit (JDK) version 5.0 or version 6.0 (download) UML Module Sun Java System Application Server, Platform Edition 9 (download) For this tutorial you need to register a local instance of Sun Java System Application Server Additional Resources with the IDE. FAQs Sample Applications Tutorial Exercises Support Setting Up the Enterprise Application Project Training Coding the EJB Module NetBeans 5.0 Docs Coding the Web Module NetBeans 6.0 Preview Docs Contribute Documentation! Running the Project TroubleshootingSetting Up the Enterprise Application ProjectThe goal of this exercise is to create the NewsApp enterprise application project containing an EJBmodule and a web module. The NewsApp application uses a message-driven bean to receive andprocess messages sent to the queue by a servlet. The application uses servlets to send messagesto the message-driven bean and to display messages. Creating an Enterprise Application 1. Choose File > New Project (Ctrl-Shift-N) from the main menu. 2. Select Enterprise Application from the Enterprise category and click Next. 3. Name the project NewsApp and set the server to Sun Java System Application Server. 4. Set the J2EE Version to Java EE 5, and select Create EJB Module and Create Web Application Module, if unselected. 5. Click Finish. Summary In this exercise we created a Java EE 5 enterprise application containing an EJB module and a web module.Coding the EJB ModuleIn this exercise we will create the objects in the EJB module. We will create an entity class, amessage-driven bean and a session facade. We also will create a persistence unit to provide thecontainer with information for managing our entities, and the Java Message Service (JMS)resources that our message-driven bean will use. Creating a Persistence Unit First we create a persistence unit that defines the data source and entity manager used in our application. 1. Right-click the EJB module and choose New > File/Folder. 2. From the Persistence category, select Persistence Unit and click Next.
  • 3. Keep the default Persistence Unit Name. 4. For the Persistence Provider, choose TopLink (default). 5. For the Data Source, choose the default data source jdbc/sample. 6. Check that the persistence unit is using the Java Transaction API and that the Table Generation Strategy is set to Create so that the tables based on our entity classes are created when the application is deployed. 7. Click Finish.When you click Finish, the IDE creates persistence.xml and opens it in the Source Editor inDesign view. Close persistence.xml.Creating the NewsEntity Entity ClassIn this exercise we will create the NewsEntity entity class. An entity class is a simple Javaclass. When you create the entity class, the IDE adds the @Entity annotation to define theclass as an entity class. After we create the class, we will create fields in the class to representthe data that we want in our table.Each entity class must have a primary key. When you create the entity class, the IDE adds the@Id annotation to declare which field to use as the primary key. The IDE also adds the@Generated annotation to specify the key generation strategy for the primary Id.To create the NewsEntity class, do the following: 1. Right-click the EJB module in the Project window and choose New > File/Folder to open the New File wizard. 2. From the Persistence category, select Entity Class and click Next. 3. Type NewsEntity for the class name, type ejb for the package, and leave the Primary Key Type as Long. Click Finish.When you click Finish, the entity class NewsEntity.java opens in the Source Editor. In theSource Editor, do the following: 1. Add the following field declarations to the class: String title; String body; 2. Right-click in the Source Editor and choose Refactor > Encapsulate Fields to generate getters and setters for each of the fields. In the Encapsulate Fields dialog box, make sure that getter and setter checkboxes are selected for the fields id, title and body. 3. Click Next in the Encapsulate Fields dialog box and then click Do Refactoring in the Refactoring tab of the Output window. The IDE adds the getter and setter methods for the fields and changes the visibility of the fields to private. 4. Save your changes to the file.In the next step we will create the NewMessage message-driven bean.Creating the NewMessage Message-Driven BeanNow we will create the NewMessage message-driven bean in our EJB module. We will use theNew Message-Driven Bean wizard to create the bean and the necessary JMS resources.To create the NewMessage message-driven bean, do the following:
  • 1. Right-click the EJB module in the Projects window and choose New > File/Folder to open the New File wizard. 2. From the Enterprise category, select Message-Driven Beans and click Next. 3. Type NewMessage for the class name. 4. Select ejb from the Package drop-down list. 5. Select Queue as the Destination Type and click Finish.When you click Finish, the new message-driven bean class NewMessage.java opens in the Source Editor. Youcan see that the class has the following annotation: @MessageDriven(mappedName = "jms/NewMessage")This annotation tells the container that the component is a message-driven bean and the JMS resource used bythe bean. When the IDE generates the class, the Mapped Name of the resource (jms/NewMessage) is derivedfrom the name of the class (NewMessage.java). The JMS resource is mapped to the JNDI name of thedestination from which the bean receives messages. The New Message-Driven Bean wizard has already createdthe JMS resources for us. The EJB 3.0 API enables us to look up objects in the JNDI namespace from within thebean class so that we do not need to configure deployment descriptors to specify the JMS resources.The EJB 3.0 specifications allow us to use annotations to introduce resources directly into a class. We will nowuse annotations to introduce the MessageDrivenContext resource into our class, and then inject thePersistenceContext resource which will be used by the EntityManager API to manage the persistent entityinstances. We will add the annotations to the class in the Source Editor. 1. Inject the MessageDrivenContext resource into the class by adding the following annotated field (in bold) to the class: public class NewMessage implements MessageListener { @Resource private MessageDrivenContext mdc; 2. Introduce the entity manager into the class by right-clicking in the code and selecting Persistence > Use Entity Manager from the pop-up menu. This adds the following annotation to your source code: @PersistenceContext private EntityManager em; and generates the following method in your code: public void persist(Object object) { // TODO: // em.persist(object); } 3. Modify the persist method to change the name to save. The method should look like the following: public void save(Object object) { em.persist(object); } 4. Modify the onMessage method by adding the following to the body: ObjectMessage msg = null; try { if (message instanceof ObjectMessage) { msg = (ObjectMessage) message; NewsEntity e = (NewsEntity) msg.getObject(); save(e); } } catch (JMSException e) { e.printStackTrace(); mdc.setRollbackOnly(); } catch (Throwable te) { te.printStackTrace(); } 5. Press Alt-Shift-F to generate any necessary import statements. When generating the import statements,
  • we want to make sure we import the jms and javax.annotation.Resource; libraries. 6. Save the file. Creating the Session Bean Next we create a session facade for the NewsEntity entity class. To create the session facade, do the following: 1. Right-click the EJB module and choose New > File/Folder. 2. From the Persistence category, select Session Beans for Entity Classes and click Next. 3. From the list of available entity classes, select NewsEntity and click Add and then click Next. 4. Check that the Package is set to ejb and that a local interface will be created. 5. Click Finish. When you click Finish, the session facade class NewsEntityFacade.java is created and opens in the Source Editor. The IDE also creates the local interface NewsEntityFacadeLocal.java. EJB 3.0 technology simplifies the creation of session beans by reducing the amount of required code. You can see that the annotation @Stateless is used to declare the class as a stateless session bean component and that the class no longer needs a statement implementing javax.ejb.SessionBean. The code is also much cleaner because with EJB 3.0 technology the business methods no longer need to have code declaring they throw checked exceptions. You can see that the PersistenceContext resource was injected directly into the session bean component when we created the session facade. Summary In this exercise, we coded an entity class and a message-driven bean in the EJB module. We then created a session facade for the entity class. We also created the JMS resources that will be used by our application.Coding the Web ModuleWe will now create the servlets ListNews and PostMessage in our web module. These servlets will be used to readand add messages. Creating the ListNews Servlet In this exercise we will create a simple servlet for displaying our data. We will use annotations to call our entity bean from our servlet. 1. Right-click the web module project and choose New > Servlet. 2. Type ListNews for the Class Name. 3. Enter web for the Package name and click Finish. When you click Finish, the class ListNews.java opens in the Source Editor. In the Source Editor, do the following: 1. Right-click in the source code and select Enterprise Resources > Call Enterprise Bean. 2. In the Call Enterprise Bean dialog box, select NewsEntityFacade and click OK. When you click OK, the entity bean resource is injected in the servlet using the @EJB annotation. 3. In the processRequest method, modify the method by uncommenting the code and adding the following lines in bold to the body of the method: out.println("<h1>Servlet ListNews at " + request.getContextPath () + "</h1>"); List news = newsEntityFacade.findAll(); for (Iterator it = news.iterator(); it.hasNext();) { NewsEntity elem = (NewsEntity) it.next(); out.println(" <b>"+elem.getTitle()+" </b><br />"); out.println(elem.getBody()+"<br /> "); } out.println("<a href=PostMessage>Add new message</a>"); out.println("</body>"); 4. Press Alt-Shift-F to generate any necessary import statements for the class. When generating the import statements, we want to import classes from the util package. 5. Save the changes to the file. Creating the PostMessage Servlet In this exercise we will create the PostMessage servlet that will be used to post messages. We will use
  • annotations to inject the JMS resources we created directly into the servlet, specifying the variable name and thename to which it is mapped. We will then add the code to send the JMS message and the code for the HTML formfor adding a message. 1. Right-click the web module project and choose New > Servlet. 2. Type PostMessage for the Class Name. 3. Enter web for the Package name and click Finish.When you click Finish, the class PostMessage.java opens in the Source Editor. In the Source Editor, do thefollowing: 1. Use annotations to inject the ConnectionFactory and Queue resources by adding the following field declarations (in bold): public class PostMessage extends HttpServlet { @Resource(mappedName="jms/NewMessageFactory") private ConnectionFactory connectionFactory; @Resource(mappedName="jms/NewMessage") private Queue queue; 2. We now add the code to send the JMS messages by adding the following code in bold to the processRequest method: response.setContentType("text/html;charset=UTF-8"); // Add the following code to send the JMS message String title=request.getParameter("title"); String body=request.getParameter("body"); if ((title!=null) && (body!=null)) { try { Connection connection = connectionFactory.createConnection(); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); MessageProducer messageProducer = session.createProducer(queue); ObjectMessage message = session.createObjectMessage(); // here we create NewsEntity, that will be sent in JMS message NewsEntity e = new NewsEntity(); e.setTitle(title); e.setBody(body); message.setObject(e); messageProducer.send(message); messageProducer.close(); connection.close(); response.sendRedirect("ListNews"); } catch (JMSException ex) { ex.printStackTrace(); } } PrintWriter out = response.getWriter(); 3. We now uncomment the code to print the HTML and add the web form for adding a message. Add the following lines in bold to the processRequest method out.println("Servlet PostMessage at " + request.getContextPath() + "</h1>"); // Add the following code to add the form to the web page out.println("<form>"); out.println("Title: <input type=text name=title><br/>"); out.println("Message: <textarea name=body></textarea><br/>"); out.println("<input type=submit><br/>"); out.println("</form>"); out.println("</body>"); 4. Press Alt-Shift-F to generate any necessary import statements for the class. Note: When selecting the which libraries to import for Connection, ConnectionFactory, Session and Queue, make sure you import the java.jms libraries.
  • 5. Save your changes to the file.Running the ProjectWe can now run our project. When we run the project, we want our browser to open to the page with the ListNewsservlet. We do this by specifying the URL in the Properties dialog box for our Enterprise Application. The URL isrelative to the context path for our application. After we enter the relative URL, we can build, deploy and run ourapplication from the Projects window.To set the relative URL and run our application, do the following: 1. In the Projects window, right-click the NewsApp enterprise application node and select Properties in the pop- up menu. 2. Select Run in the Categories pane. 3. In the Relative URL textfield, type /ListNews. 4. Click OK. 5. In the Projects window, right click the NewsApp enterprise application node and choose Run Project.When you run the project, the ListNews servlet opens in your browser and displays a list of the messages in thedatabase. When you first run the project, the database is empty, but you can click Add Message to add a message.When you add a message with the PostMessage servlet, the message is sent to the message-driven bean forwriting to persistent storage, and the ListNews servlet is called to display the messages in the database. The list ofmessages in the database retrieved by ListNews often does not yet contain the new message because our messageservice is asynchronous.TroubleshootingThe following are some of the problems you may encounter when creating your project. Problem with JMS Resources When using the wizard to create JMS resources, you may see the following server error message in the output window: [com.sun.enterprise.connectors.ConnectorRuntimeException: JMS resource not created : jms/Queue] This message could indicate that the JMS resource was not created or was not registered with the application server. You can use the Admin Console of the Sun Java System Application Server to check, create and edit JMS resources. To open the Admin Console, do the following: 1. Confirm that the Sun Java System Application Server is running by expanding the Servers node in the Runtime of the IDE. A small green arrow next to the Sun Java System Application Server node indicates the server is running. 2. Right-click the Sun Java System Application Server node and choose View Admin Console to open the login window in your browser.
  • 3. Log in to the Sun Java System Application Server. The default user name and password are admin and adminadmin. 4. In the Admin Console in your browser, expand the Resources node and JMS Resources node in the left frame. 5. Click on the Connection Factories and Destination Resources links in the left frame to check if the resources are registered with the server and if necessary modify the resources. If the resources do not exist, you can create them in the Admin Console. You need to make sure that the JMS connection factory resource in the PostMessage servlet is mapped to the correct JNDI name of the JMS connection factory resource registered with the Sun Java System Application Server. The following resources should be registered with the Sun Java System Application Server: a Destination resource with the JNDI name jms/NewMessage and type javax.jms.Queue a Connection Factory resource with the JNDI name jms/NewMessageFactory and type javax.jms.QueueConnectionFactory Send Us Your FeedbackNext StepsFor more information about using NetBeans IDE 5.5 to develop Java EE applications, see the following resources: Introduction to Java EE 5 Technology Java Persistence in the Java EE 5 Platform Comparing Java EE 5 Platform and J2EE 1.4 Platform Java EE Applications Learning TrailYou can find more information about using EJB 3.0 Enterprise Beans in the Java EE 5 Tutorial.To send comments and suggestions, get support, and keep informed on the latest developments on the NetBeansIDE Java EE development features, join the nbj2ee mailing list. Bookmark this pageShop SiteMap About Us Contact Legal By use of this website, you agree to the NetBeans Policies and Terms of Use