Professional Documents
Culture Documents
NetBeans IDE NetBeans Platform Enterprise Plugins Docs & Support Community
HOME / Docs & Support
Search
Training
Java Programming Language
Support
Oracle Development Tools Support Offering for NetBeans IDE
Documentation
General Java Development External Tools and Services Java GUI Applications Java EE & Java Web Development Web Services Applications NetBeans Platform (RCP) and Module Development PHP and HTML5 Applications C/C++ Applications Mobile Applications Sample Applications Demos and Screencasts
More
FAQs Contribute Documentation! Docs for Earlier Releases
GlassFish Server Open Source Edition 3.x, 4.x Prerequisites This document assumes you have some basic knowledge of, or programming experience with, the following technologies: Java Programming NetBeans IDE You can download a zip archive of the finished project.
https://netbeans.org/kb/docs/javaee/javaee-entapp-ejb.html
1/11
26/10/13
Java EE 6 Tutorial, Part I.
When you click Finish, the IDE creates three projects: NewsApp, NewsApp-ejb and NewsApp-war. If you expand the NewsApp node in the Projects window, you can see that the enterprise application project does not contain any sources. All the sources will be contained in the two modules that the wizard created and which are listed under the Java EE Modules node. The enterprise application project only contains configuration details about the application and is building the project creates the EAR for deployment. In some cases, the enterprise application project will contain deployment descriptor files with additional information, but deployment descriptor files are not required when you create a Java EE enterprise application that is deployed to GlassFish Server.
https://netbeans.org/kb/docs/javaee/javaee-entapp-ejb.html
2/11
26/10/13
11. Click Finish. When you click Finish, the IDE creates p e r s i s t e n c e . x m land the entity class N e w s E n t i t y . j a v a . The IDE opens
p r i v a t eS t r i n gt i t l e ; p r i v a t eS t r i n gb o d y ;
2. Right-click in the Source Editor and choose Insert Code (Alt-Insert; Ctrl-I on Mac) and select Getter and Setter to open the Generate Getters and Setters dialog box. 3. Select the b o d yand t i t l efields in the dialog box. Click Generate.
When you click Generate, the IDE adds getter and setter methods for the fields. 4. Save the changes to N e w s E n t i t y . j a v a . You can close N e w s E n t i t y . j a v a . For more details about entity classes, see the chapter Introduction to the Java Persistence API in the Java EE 6 Tutorial, Part I.
https://netbeans.org/kb/docs/javaee/javaee-entapp-ejb.html
3/11
26/10/13
When you click Finish, the bean class N e w M e s s a g e . j a v aopens in the Source Editor. You can see that the IDE added the
@ M e s s a g e D r i v e n ( m a p p e d N a m e=" j m s / N e w M e s s a g e " ,a c t i v a t i o n C o n f i g= { @ A c t i v a t i o n C o n f i g P r o p e r t y ( p r o p e r t y N a m e=" a c k n o w l e d g e M o d e " ,p r o p e r t y V a l u e= " A u t o a c k n o w l e d g e " ) , @ A c t i v a t i o n C o n f i g P r o p e r t y ( p r o p e r t y N a m e=" d e s t i n a t i o n T y p e " ,p r o p e r t y V a l u e= " j a v a x . j m s . Q u e u e " ) } ) p u b l i cc l a s sN e w M e s s a g ei m p l e m e n t sM e s s a g e L i s t e n e r{
The @ M e s s a g e D r i v e nannotation tells the container that the component is a message-driven bean and specifies the JMS resource used by the bean. When the IDE generates the class, the Mapped Name of the resource (j m s / N e w M e s s a g e ) is derived from the name of the class (N e w M e s s a g e . j a v a ). The JMS resource is mapped to the JNDI name of the destination from which the bean receives messages. The New Message-Driven Bean wizard also adds the information for the JMS resources to g l a s s f i s h -
r e s o u r c e s . x m l . You do not need to configure deployment descriptors to specify the JMS resources. If you use the Run action in the
IDE to deploy the application to GlassFish, the JMS resources are created on the server on deployment. The EJB specifications allow you to use annotations to introduce resources directly into a class. You will now use annotations to introduce the M e s s a g e D r i v e n C o n t e x tresource into your class, and then inject the P e r s i s t e n c e C o n t e x tresource which will be used by the EntityManager API to manage the persistent entity instances. You will add the annotations to the class in the Source Editor. 1. Inject the M e s s a g e D r i v e n C o n t e x tresource into the class by adding the following annotated field (in bold) to the class:
p u b l i cc l a s sN e w M e s s a g ei m p l e m e n t sM e s s a g e L i s t e n e r{ @ R e s o u r c e p r i v a t eM e s s a g e D r i v e n C o n t e x tm d c ;
2. Introduce the entity manager into the class by right-clicking in the code and choosing Insert Code (Alt-Insert; Ctrl-I on Mac) and choosing Use Entity Manager from the pop-up menu. The IDE adds the following @ P e r s i s t e n c e C o n t e x tannotation to your source code.
@ P e r s i s t e n c e C o n t e x t ( u n i t N a m e=" N e w s A p p e j b P U " ) p r i v a t eE n t i t y M a n a g e re m ;
The IDE also generates the following p e r s i s tmethod.
p u b l i cv o i dp e r s i s t ( O b j e c to b j e c t ){ e m . p e r s i s t ( o b j e c t ) ; }
3. Modify the p e r s i s tmethod to change the name to s a v e . The method should look like the following:
p u b l i cv o i ds a v e ( O b j e c to b j e c t ){ e m . p e r s i s t ( o b j e c t ) ; }
4. Modify the o n M e s s a g emethod by adding the following code (in bold) to the body of the method.
https://netbeans.org/kb/docs/javaee/javaee-entapp-ejb.html
4/11
26/10/13
j a v a x . a n n o t a t i o n . R e s o u r c elibraries.
For more details about message-driven beans, see the chapter What is a Message-Driven Bean? in the Java EE 6 Tutorial, Part I.
When you click Finish, the IDE generates the session facade class N e w s E n t i t y F a c a d e . j a v aand A b s t r a c t F a c a d e . j a v aand opens the files in the editor. As you can see in the generated code, the annotation @ S t a t e l e s sis used to declare
N e w s E n t i t y F a c a d e . j a v aas a stateless session bean component. The IDE also adds the P e r s i s t e n c e C o n t e x tannotation
to inject the resource directly into the session bean component. N e w s E n t i t y F a c a d e . j a v aextends A b s t r a c t F a c a d e . j a v a , which contains the business logic and manages the transaction. Note. Remote interfaces are still required if the beans will be accessed by remote clients. For more information about session beans, see the chapter What is a Session Bean? in the Java EE 6 Tutorial, Part I.
https://netbeans.org/kb/docs/javaee/javaee-entapp-ejb.html
5/11
26/10/13
multiple clients.
To create the singleton session bean, perform the following steps. 1. Right-click the Web module and choose New > Other to open the New File wizard. 2. Select Session Bean in the Enterprise JavaBeans category. Click Next. 3. Type SessionManagerBean for the EJB Name. 4. Type ejb for the Package name. 5. Select Singleton. Click Finish.
When you click Finish, the IDE creates the singleton session bean class and opens the class in the editor. You can see that the IDE added the annotation @ S i n g l e t o nto the class to declare a singleton session bean. The wizard also annotated the class with
@ L o c a l B e a n .
@ S i n g l e t o n @ L o c a l B e a n p u b l i cc l a s sS e s s i o n M a n a g e r B e a n{ }
1. Annotate the class with @ W e b L i s t e n e rand implement H t t p S e s s i o n L i s t e n e r .
@ S i n g l e t o n @ L o c a l B e a n @ W e b L i s t e n e r p u b l i cc l a s sS e s s i o n M a n a g e r B e a ni m p l e m e n t sH t t p S e s s i o n L i s t e n e r { }
The @ W e b L i s t e n e rannotation is part of the Servlet 3.0 API and enables you to implement a listener directly in your code. When you implement H t t p S e s s i o n L i s t e n e r , the IDE displays a warning in the margin. 2. Click the warning badge in the left margin and choose "Implement all abstract methods".
The IDE adds the s e s s i o n C r e a t e dand s e s s i o n D e s t r o y e dmethods. 3. Add the static field c o u n t e rand set the initial value to 0 .
@ L o c a l B e a n @ W e b L i s t e n e r p u b l i cc l a s sS e s s i o n M a n a g e r B e a ni m p l e m e n t sH t t p S e s s i o n L i s t e n e r { p r i v a t es t a t i ci n tc o u n t e r=0 ;
https://netbeans.org/kb/docs/javaee/javaee-entapp-ejb.html
6/11
26/10/13
p u b l i cv o i ds e s s i o n C r e a t e d ( H t t p S e s s i o n E v e n ts e ){ c o u n t e r + + ; } p u b l i cv o i ds e s s i o n D e s t r o y e d ( H t t p S e s s i o n E v e n ts e ){ c o u n t e r ; }
5. Add the following method that returns the current value of c o u n t e r .
p u b l i ci n tg e t A c t i v e S e s s i o n s C o u n t ( ){ r e t u r nc o u n t e r ; }
You will call this method from a servlet to display the current number of users/open sessions. 6. Save your changes. The code for the session bean should now look like the following.
@ S i n g l e t o n @ L o c a l B e a n @ W e b L i s t e n e r p u b l i cc l a s sS e s s i o n M a n a g e r B e a ni m p l e m e n t sH t t p S e s s i o n L i s t e n e r{ p r i v a t es t a t i ci n tc o u n t e r=0 ; p u b l i cv o i ds e s s i o n C r e a t e d ( H t t p S e s s i o n E v e n ts e ){ c o u n t e r + + ; } p u b l i cv o i ds e s s i o n D e s t r o y e d ( H t t p S e s s i o n E v e n ts e ){ c o u n t e r ; } p u b l i ci n tg e t A c t i v e S e s s i o n s C o u n t ( ){ r e t u r nc o u n t e r ; } }
For more details about singleton session beans, see the chapter What is a Session Bean? in the Java EE 6 Tutorial, Part I.
You can also see that the @ W e b S e r v l e tannotation is used to declare the class a servlet and to specify the servlet name. The
@ W e b S e r v l e tannotation is part of the Servlet 3.0 API introduced in the Java EE 6 specification. You can identify servlets using
the annotation instead of in the w e b . x m ldeployment descriptor. The NewsApp application does not contain w e b . x m l . 4. In the p r o c e s s R e q u e s tmethod, add the following code (in bold) to return the current session or create a new one.
https://netbeans.org/kb/docs/javaee/javaee-entapp-ejb.html
7/11
26/10/13
o u t . p r i n t l n ( " < h 1 > S e r v l e tL i s t N e w sa t"+r e q u e s t . g e t C o n t e x t P a t h( )+" < / h 1 > " ) ; L i s tn e w s=n e w s E n t i t y F a c a d e . f i n d A l l ( ) ; f o r( I t e r a t o ri t=n e w s . i t e r a t o r ( ) ;i t . h a s N e x t ( ) ; ){ N e w s E n t i t ye l e m=( N e w s E n t i t y )i t . n e x t ( ) ; o u t . p r i n t l n ( "< b > " + e l e m . g e t T i t l e ( ) + "< / b > < b r/ > " ) ; o u t . p r i n t l n ( e l e m . g e t B o d y ( ) + " < b r/ >" ) ; } o u t . p r i n t l n ( " < ah r e f = ' P o s t M e s s a g e ' > A d dn e wm e s s a g e < / a > " ) ; o u t . p r i n t l n ( " < / b o d y > " ) ;
6. Add the following code (in bold) to retrieve and print the number of users/open sessions.
o u t . p r i n t l n ( " < ah r e f = ' P o s t M e s s a g e ' > A d dn e wm e s s a g e < / a > " ) ; o u t . p r i n t l n ( " < b r > < b r > " ) ; o u t . p r i n t l n ( s e s s i o n M a n a g e r B e a n . g e t A c t i v e S e s s i o n s C o u n t ( )+"u s e r ( s )r e a d i n gt h e n e w s . " ) ; o u t . p r i n t l n ( " < / b o d y > " ) ;
7. Press Ctrl-Shift-I to generate any necessary import statements for the class. When generating the import statements, you want to import the j a v a . u t i llibraries. 8. Save the changes to the file.
r e s p o n s e . s e t C o n t e n t T y p e ( " t e x t / h t m l ; c h a r s e t = U T F 8 " ) ; / /A d dt h ef o l l o w i n gc o d et os e n dt h eJ M Sm e s s a g e S t r i n gt i t l e = r e q u e s t . g e t P a r a m e t e r ( " t i t l e " ) ; S t r i n gb o d y = r e q u e s t . g e t P a r a m e t e r ( " b o d y " ) ; i f( ( t i t l e ! = n u l l )& &( b o d y ! = n u l l ) ){ t r y{ C o n n e c t i o nc o n n e c t i o n=c o n n e c t i o n F a c t o r y . c r e a t e C o n n e c t i o n ( ) ; S e s s i o ns e s s i o n=c o n n e c t i o n . c r e a t e S e s s i o n ( f a l s e ,S e s s i o n . A U T O _ A C K N O W L E D G E ) ; M e s s a g e P r o d u c e rm e s s a g e P r o d u c e r=s e s s i o n . c r e a t e P r o d u c e r ( q u e u e ) ; O b j e c t M e s s a g em e s s a g e=s e s s i o n . c r e a t e O b j e c t M e s s a g e ( ) ; / /h e r ew ec r e a t eN e w s E n t i t y ,t h a tw i l lb es e n ti nJ M Sm e s s a g e N e w s E n t i t ye=n e wN e w s E n t i t y ( ) ; e . s e t T i t l e ( t i t l e ) ; e . s e t B o d y ( b o d y ) ;
https://netbeans.org/kb/docs/javaee/javaee-entapp-ejb.html
8/11
26/10/13
3. Add the following lines (in bold) to the p r o c e s s R e q u e s tmethod to add the web form for adding a message. (Uncomment the code to print the HTML if necessary.)
o u t . p r i n t l n ( " S e r v l e tP o s t M e s s a g ea t"+r e q u e s t . g e t C o n t e x t P a t h ( )+" < / h 1 > " ) ; / /T h ef o l l o w i n gc o d ea d d st h ef o r mt ot h ew e bp a g e o u t . p r i n t l n ( " < f o r m > " ) ; o u t . p r i n t l n ( " T i t l e :< i n p u tt y p e = ' t e x t 'n a m e = ' t i t l e ' > < b r / > " ) ; o u t . p r i n t l n ( " M e s s a g e :< t e x t a r e an a m e = ' b o d y ' > < / t e x t a r e a > < b r / > " ) ; o u t . p r i n t l n ( " < i n p u tt y p e = ' s u b m i t ' > < b r / > " ) ; o u t . p r i n t l n ( " < / f o r m > " ) ; o u t . p r i n t l n ( " < / b o d y > " ) ;
4. Press Ctrl-Shift-I to generate any necessary import statements for the class. Note: When selecting the libraries to import for C o n n e c t i o n ,C o n n e c t i o n F a c t o r y ,S e s s i o nand Q u e u e , confirm that you import the j a v a x . j m slibraries.
https://netbeans.org/kb/docs/javaee/javaee-entapp-ejb.html
9/11
26/10/13
When you add a message with the P o s t M e s s a g eservlet, the message is sent to the message-driven bean for writing to persistent storage, and the L i s t N e w sservlet is called to display the messages in the database. The list of messages in the database retrieved by
L i s t N e w soften does not yet contain the new message because our message service is asynchronous.
h t t p s : / / s v n . n e t b e a n s . o r g / s v n / s a m p l e s ~ s a m p l e s s o u r c e c o d e
Click Next. Click Browse to open the Browse Repository Folders dialog box. Expand the root node and select samples/javaee/NewsAppEE6. Click OK. Specify the Local Folder for the sources (the local folder must be empty). Click Finish. When you click Finish, the IDE initializes the local folder as a Subversion repository and checks out the project sources. Click Open Project in the dialog that appears when checkout is complete. Notes. You need a Subversion client to checkout the sources. For more about installing Subversion, see the section on Setting up Subversion in the Guide to Subversion in NetBeans IDE.
Troubleshooting
The following are some of the problems you may encounter when creating your project.
[ c o m . s u n . e n t e r p r i s e . c o n n e c t o r s . C o n n e c t o r R u n t i m e E x c e p t i o n : J M Sr e s o u r c en o tc r e a t e d:j m s / Q u e u e ]
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 application server to check, create and edit JMS resources. To open the Admin Console, do the following: 1. Confirm that the application server is running by expanding the Servers node in the Services window of the IDE. A small green arrow next to the application server node indicates the server is running. 2. Right-click the application server node and choose View Admin Console to open the login window in your browser. 3. Log in to the server. The default user name and password are a d m i nand a d m i n a d m i n . 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 j m s / N e w M e s s a g eand type j a v a x . j m s . Q u e u e a Connection Factory resource with the JNDI name j m s / N e w M e s s a g e F a c t o r yand type
j a v a x . j m s . Q u e u e C o n n e c t i o n F a c t o r y
https://netbeans.org/kb/docs/javaee/javaee-entapp-ejb.html
10/11
26/10/13
See Also
For more information about using NetBeans IDE to develop Java EE applications, see the following resources: Introduction to Java EE Technology Getting Started with Java EE 6 Applications Introduction to Developing Web Applications Java EE & Java Web Learning Trail You can find more information about using enterprise beans in the Java EE 7 Tutorial. To send comments and suggestions, get support, and keep informed on the latest developments on the NetBeans IDE Java EE development features, join the nbj2ee mailing list.
SiteMap
About Us
Contact
By use of this w ebsite, you agree to the NetBeans Policies and Terms of Use. 2013, Oracle Corporation and/or its affiliates. Sponsored by
https://netbeans.org/kb/docs/javaee/javaee-entapp-ejb.html
11/11