Võ Văn Hải's blog

Chỉ có một điều tuyệt đối đó là mọi thứ đều tương đối…

EJB 2.x với NetBeans 6.7.1 & JBoss AS 4.23 GA

Phần này tôi có 1 loạt bài viết về cách tạo và làm việc với EJB2x trên Netbeans 6.71. Application Server ở đây sử dụng là JBoss 4.23GA.

  1. Bài 01 – Cấu hình JBoss 4.23GA trong Netbeans 6.7.1
  2. Bài 02 – Stateless Session Bean EJB2.1 với NetBeans 6.7.1
  3. Bài 03 – Stateful Session Bean EJB2.1 – Shopping Cart
  4. Bài 04 – Bean-Managed Persistence Entity Beans
  5. Bài 05 – Container-Managed Persistence Entity Beans
  6. Bài 06 – CMR One-to-One
  7. Bài 07 – CMR One-to-Many
  8. Bài 08 – CMR Many-to-Many
  9. Bài 09- Bean Managed Transaction
  10. Bài 10- Container Managed Transaction
  11. Bài 11- Message Driven Bean
  12. Bài 12- Message Driven Bean – Entity Beans
  13. Bài 13 – Security

Loạt bài hướng dẫn EJB3.0 trên netbeans sẽ được viết trong phần EJB3x.

43 Responses to “EJB 2.x với NetBeans 6.7.1 & JBoss AS 4.23 GA”

  1. Duong Tuan said

    Hi Thầy. Vô tình biết được blog này của thầy.
    Thầy ơi. Link của thầy die hết rồi. Thầy có thể up lại được ko ạ. Cảm ơn thầy nhiều

  2. vovanhai said

    không die đâu. Bạn phải biết cách download. Không phải nhấn phải chuột chọn saveas hay đại loại như thế. bạn phải theo link vào skydriver mới download được.

  3. VCH said

    link die roi`, ko vao` dc .

  4. Duong Tuan said

    Hi thầy. Năm mới thầy ăn tết có vui không ạ. ^^ Chúc thầy 1 năm mới an khang thịnh vượng và tràn đầy hạnh phúc.
    Tất nhiên là những cái đó em có biết ạ. Nhưng khi bấm vào đó thì nó ra như sau.


    That item seems to be missing
    Someone may have deleted or moved the item, or you may not have permission to view it. If you have questions about this item, contact the person who created it.

    Mà nếu vào http://cid-71ca308c198c9c7f.skydrive.live.com/home.aspx đây thì em ko biết down nó ở đâu. Cảm phiền thầy xem lại giúp em với ạ. Em cảm ơn thầy

  5. vovanhai said

    Chắc là do tôi nhầm lẫn trong việc phân quyền trong skydriver rồi. TÔi đã sửa. Thanks for your comment.
    http://cid-71ca308c198c9c7f.skydrive.live.com/browse.aspx/ejb2x%5E_neabeans671%5E_Jboss423GA

  6. phamvietdung said

    Thưa thầy cho em hỏi, trong bài 2: file Jbossclient_library gồm những file nào ạ? em làm theo thầy mà thiếu bước add library jbossclient và khi chạy bị báo lỗi sau:
    ERROR [MainDeployer] Could not make local copy for file:/C:/jboss-4.2.3.GA/server/default/deploy/ejb3.deployer/jboss-annotations-ejb3.jar
    java.io.FileNotFoundException: C:\jboss-4.2.3.GA\server\default\tmp\deploy\tmp64006jboss-annotations-ejb3.jar (Access is denied)
    Xin thầy hướng dẫn em thêm, em cảm ơn thầy

  7. Lan said

    Thưa thầy.em đang làm một bài tập về j2ee với ejb2.1,netbean 6.71 và glassfish.Có một lỗi xuất hiện em không thể nào gỡ được đó là:
    -Khi deploy và run .ear thì thành công
    -Deloy .ejb cũng thành công
    -De loy .war thì thất bại với thông báo là: Error: Unresolved : SmartTicketFacadeBean
    Em đã add .ejb vào thư viện của .war,tạo ra các file web.xml và ejb-jar.xml có nội dung tham chiếu tới nhau.

    Em nên giải quyết vấn đề này thế nào ạ?

  8. Lan said

    Thông báo lỗi đầy đủ là:

    Deploying application in domain failed; Error loading deployment descriptors for module [smart_ticket_temp] — Error: Unresolved : SmartTicketFacadeBean

    C:\Users\DucPhuong\Documents\NetBeansProjects\temp\smart_ticket_temp\nbproject\build-impl.xml:574: The module has not been deployed.
    BUILD FAILED (total time: 1 second)

  9. vovanhai said

    lỗi khá rõ ràng rồi: Error loading deployment descriptors …
    Bạn xem lại ejb-jar.xml nhé!

  10. van tuan said

    Trang web thầy hướng dẫn rất hay. Thanks thầy. Link many to many sao không down đc vậy thầy?
    Đây là EJB 2.x, khi nào có 3.x vậy thầy? Chúc thầy vui.

  11. vovanhai said

    bạn click lên nó cho chuyển trang chứ không được nhẩn phải chuột, chọn save-as.

  12. Lan said

    Thưa thầy, file ejb-jar.xml và web.xml chắc chắn là không sai.
    -Deploy riêng rẽ : .jar thành công, .war thất bại(gặp lỗi trên).
    -Deploy .ear thành công.
    -Điều đó có nghĩa là khi deploy .war một mình nó chỉ có thể tìm đến .jar khi là remote, nếu là local thì buộc phải đưa vào trong cùng .ear.
    -Deploy riêng rẽ thì thấy .jar trong lib của .war nhưng nếu deploy cả dự án .ear sẽ không có.

    Vậy làm thế nào để xuất hiện .jar trong thư mục lib của .war thưa thầy?

  13. vovanhai said

    Em đã reference web app tới ejb app chưa? thử xem sao.

  14. Lan said

    Thưa thầy, em đã add .jar vào trong thư viện của .war, trong mainfest của .war cũng để Class-path tới file .jar
    Vì trong một số hàm của war có phải gọi đến một số hàm trong jar, mà hàm này chạy ko báo lỗi nghĩa là đã truy xuất được tới jar nhưng không tìm được đến các ejb.

    Đây là nội dung web.xml

    smartticket-war
    smartticket-war

    Language
    locales
    en_US,ja_JP,fr_FR

    SmartTicketSessionListener
    com.sun.j2me.blueprints.smartticket.server.web.midp.SmartTicketSessionListener

    SmartTicketSevlet
    com.sun.j2me.blueprints.smartticket.server.web.midp.SmartTicketServlet

    PopulateData
    /WEB-INF/Populate-UTF8.xml

    1

    PopulateSevlet
    com.sun.j2me.blueprints.smartticket.server.web.admin.populate.PopulateServlet

    SmartTicketSevlet
    /midp/service

    PopulateSevlet
    /admin/populate

    3600

    index.jsp

    java.lang.Exception
    /

    com.sun.j2me.blueprints.smartticket.server.ejb.SmartTicketFacadeException
    /portal/error.jsp

    ejb/SmartTicketFacade
    Session
    com.sun.j2me.blueprints.smartticket.server.ejb.SmartTicketFacadeLocalHome
    com.sun.j2me.blueprints.smartticket.server.ejb.SmartTicketFacadeLocal
    smartticket-ejb.jar#SmartTicketFacadeBean

    ejb/Account
    Entity
    com.sun.j2me.blueprints.smartticket.server.ejb.account.AccountLocalHome
    com.sun.j2me.blueprints.smartticket.server.ejb.account.AccountLocal
    AccountBean

    ejb/Theater
    Entity
    com.sun.j2me.blueprints.smartticket.server.ejb.theater.TheaterLocalHome
    com.sun.j2me.blueprints.smartticket.server.ejb.theater.TheaterLocal
    TheaterBean

    ejb/TheaterSchedule
    Entity
    com.sun.j2me.blueprints.smartticket.server.ejb.schedule.TheaterScheduleLocalHome
    com.sun.j2me.blueprints.smartticket.server.ejb.schedule.TheaterScheduleLocal
    TheaterScheduleBean

    ejb/MovieSchedule
    Entity
    com.sun.j2me.blueprints.smartticket.server.ejb.schedule.MovieScheduleLocalHome
    com.sun.j2me.blueprints.smartticket.server.ejb.schedule.MovieScheduleLocal
    MovieScheduleBean

    ejb/Movie
    Entity
    com.sun.j2me.blueprints.smartticket.server.ejb.movie.MovieLocalHome
    com.sun.j2me.blueprints.smartticket.server.ejb.movie.MovieLocal
    MovieBean

    – Đây là nội dung ejb-jar.xml

    smartticket-ejb.jar

    SmartTicketFacadeSB
    SmartTicketFacadeBean
    com.sun.j2me.blueprints.smartticket.server.ejb.SmartTicketFacadeLocalHome
    com.sun.j2me.blueprints.smartticket.server.ejb.SmartTicketFacadeLocal
    com.sun.j2me.blueprints.smartticket.server.ejb.SmartTicketFacadeBean
    Stateful
    Container

    ejb/Account
    Entity
    com.sun.j2me.blueprints.smartticket.server.ejb.account.AccountLocalHome
    com.sun.j2me.blueprints.smartticket.server.ejb.account.AccountLocal
    AccountBean

    ejb/Theater
    Entity
    com.sun.j2me.blueprints.smartticket.server.ejb.theater.TheaterLocalHome
    com.sun.j2me.blueprints.smartticket.server.ejb.theater.TheaterLocal
    TheaterBean

    ejb/MovieSchedule
    Entity
    com.sun.j2me.blueprints.smartticket.server.ejb.schedule.MovieScheduleLocalHome
    com.sun.j2me.blueprints.smartticket.server.ejb.schedule.MovieScheduleLocal
    MovieScheduleBean

    ejb/MovieShow
    Entity
    com.sun.j2me.blueprints.smartticket.server.ejb.show.MovieShowLocalHome
    com.sun.j2me.blueprints.smartticket.server.ejb.show.MovieShowLocal
    MovieShowBean

    ejb/Movie
    Entity
    com.sun.j2me.blueprints.smartticket.server.ejb.movie.MovieLocalHome
    com.sun.j2me.blueprints.smartticket.server.ejb.movie.MovieLocal
    MovieBean

    ejb/Ticketing
    Session
    com.sun.j2me.blueprints.smartticket.server.ejb.ticketing.TicketingLocalHome
    com.sun.j2me.blueprints.smartticket.server.ejb.ticketing.TicketingLocal
    TicketingBean

    ejb/Synchronizing
    Session
    com.sun.j2me.blueprints.smartticket.server.ejb.synchronizing.SynchronizingLocalHome
    com.sun.j2me.blueprints.smartticket.server.ejb.synchronizing.SynchronizingLocal
    SynchronizingBean

    TicketingSB
    TicketingBean
    com.sun.j2me.blueprints.smartticket.server.ejb.ticketing.TicketingLocalHome
    com.sun.j2me.blueprints.smartticket.server.ejb.ticketing.TicketingLocal
    com.sun.j2me.blueprints.smartticket.server.ejb.ticketing.TicketingBean
    Stateful
    Container

    ejb/Reservation
    Entity
    com.sun.j2me.blueprints.smartticket.server.ejb.reservation.ReservationLocalHome
    com.sun.j2me.blueprints.smartticket.server.ejb.reservation.ReservationLocal
    ReservationBean

    ejb/MovieSchedule
    Entity
    com.sun.j2me.blueprints.smartticket.server.ejb.schedule.MovieScheduleLocalHome
    com.sun.j2me.blueprints.smartticket.server.ejb.schedule.MovieScheduleLocal
    MovieScheduleBean

    ejb/Account
    Entity
    com.sun.j2me.blueprints.smartticket.server.ejb.account.AccountLocalHome
    com.sun.j2me.blueprints.smartticket.server.ejb.account.AccountLocal
    AccountBean

    SynchronizingSB
    SynchronizingBean
    com.sun.j2me.blueprints.smartticket.server.ejb.synchronizing.SynchronizingLocalHome
    com.sun.j2me.blueprints.smartticket.server.ejb.synchronizing.SynchronizingLocal
    com.sun.j2me.blueprints.smartticket.server.ejb.synchronizing.SynchronizingBean
    Stateful
    Container

    ejb/Movie
    Entity
    com.sun.j2me.blueprints.smartticket.server.ejb.movie.MovieLocalHome
    com.sun.j2me.blueprints.smartticket.server.ejb.movie.MovieLocal
    MovieBean

    ejb/MovieRating
    Entity
    com.sun.j2me.blueprints.smartticket.server.ejb.rating.MovieRatingLocalHome
    com.sun.j2me.blueprints.smartticket.server.ejb.rating.MovieRatingLocal
    MovieRatingBean

    ejb/Account
    Entity
    com.sun.j2me.blueprints.smartticket.server.ejb.account.AccountLocalHome
    com.sun.j2me.blueprints.smartticket.server.ejb.account.AccountLocal
    AccountBean

    ejb/SyncClient
    Entity
    com.sun.j2me.blueprints.smartticket.server.ejb.synchronizing.SyncClientLocalHome
    com.sun.j2me.blueprints.smartticket.server.ejb.synchronizing.SyncClientLocal
    SyncClientBean

    SyncMetaDataEB
    SyncMetaDataBean
    com.sun.j2me.blueprints.smartticket.server.ejb.synchronizing.SyncMetaDataLocalHome
    com.sun.j2me.blueprints.smartticket.server.ejb.synchronizing.SyncMetaDataLocal
    com.sun.j2me.blueprints.smartticket.server.ejb.synchronizing.SyncMetaDataBean
    Container
    java.lang.Object
    false
    SyncMetaData

    deleted

    creationTime

    lastModificationTime

    id

    SyncConduitEB
    SyncConduitBean
    com.sun.j2me.blueprints.smartticket.server.ejb.synchronizing.SyncConduitLocalHome
    com.sun.j2me.blueprints.smartticket.server.ejb.synchronizing.SyncConduitLocal
    com.sun.j2me.blueprints.smartticket.server.ejb.synchronizing.SyncConduitBean
    Container
    java.lang.Object
    false
    SyncConduit

    nextClientId

    ejbSelectSyncClient

    java.lang.String
    int

    SELECT DISTINCT OBJECT(o) FROM SyncClient o WHERE o.syncConduit.account.userName = ?1 and o.id = ?2

    ejbSelectSyncMetaDataDeletedSince

    java.lang.String
    long

    SELECT OBJECT(o) FROM SyncMetaData o WHERE o.syncConduit.account.userName = ?1 and o.deleted = TRUE and o.lastModificationTime > ?2

    ejbSelectSyncMetaDataChangedSince

    java.lang.String
    long

    SELECT OBJECT(o) FROM SyncMetaData o WHERE o.syncConduit.account.userName = ?1 and o.lastModificationTime > ?2

    ejbSelectSyncMetaData

    java.lang.String
    java.lang.String

    SELECT DISTINCT OBJECT(o) FROM SyncMetaData o WHERE o.syncConduit.account.userName = ?1 and o.id = ?2

    ejbSelectSyncMetaDataModifiedSince

    java.lang.String
    long

    SELECT OBJECT(o) FROM SyncMetaData o WHERE o.syncConduit.account.userName = ?1 and o.deleted = FALSE and o.lastModificationTime > ?2

    SyncClientEB
    SyncClientBean
    com.sun.j2me.blueprints.smartticket.server.ejb.synchronizing.SyncClientLocalHome
    com.sun.j2me.blueprints.smartticket.server.ejb.synchronizing.SyncClientLocal
    com.sun.j2me.blueprints.smartticket.server.ejb.synchronizing.SyncClientBean
    Container
    java.lang.Object
    false
    SyncClient

    lastSynchronizationTime

    id

    AccountEB
    AccountBean
    com.sun.j2me.blueprints.smartticket.server.ejb.account.AccountLocalHome
    com.sun.j2me.blueprints.smartticket.server.ejb.account.AccountLocal
    com.sun.j2me.blueprints.smartticket.server.ejb.account.AccountBean
    Container
    java.lang.String
    false
    Account

    password

    userName

    creditCardType

    creditCardHolderName

    zipCode

    creditCardExpirationDate

    eMail

    creditCardNumber

    firstName

    lastName

    userName

    ejb/SyncConduit
    Entity
    com.sun.j2me.blueprints.smartticket.server.ejb.synchronizing.SyncConduitLocalHome
    com.sun.j2me.blueprints.smartticket.server.ejb.synchronizing.SyncConduitLocal
    SyncConduitBean

    findAllAccounts

    SELECT OBJECT(o) FROM Account o

    ejbSelectMovieRating

    java.lang.String
    java.lang.String

    SELECT DISTINCT OBJECT(o) FROM MovieRating o WHERE o.account.userName = ?1 and o.id = ?2

    MovieEB
    MovieBean
    com.sun.j2me.blueprints.smartticket.server.ejb.movie.MovieLocalHome
    com.sun.j2me.blueprints.smartticket.server.ejb.movie.MovieLocal
    com.sun.j2me.blueprints.smartticket.server.ejb.movie.MovieBean
    Container
    java.lang.String
    false
    Movie

    summary

    title

    posterURL

    rating

    id

    id

    findAllMovies

    SELECT OBJECT(o) FROM Movie o

    MovieRatingEB
    MovieRatingBean
    com.sun.j2me.blueprints.smartticket.server.ejb.rating.MovieRatingLocalHome
    com.sun.j2me.blueprints.smartticket.server.ejb.rating.MovieRatingLocal
    com.sun.j2me.blueprints.smartticket.server.ejb.rating.MovieRatingBean
    Container
    java.lang.Object
    false
    MovieRating

    lastViewingDate

    starNumber

    id

    ejb/SyncMetaData
    Entity
    com.sun.j2me.blueprints.smartticket.server.ejb.synchronizing.SyncMetaDataLocalHome
    com.sun.j2me.blueprints.smartticket.server.ejb.synchronizing.SyncMetaDataLocal
    SyncMetaDataBean

    ReservationEB
    ReservationBean
    com.sun.j2me.blueprints.smartticket.server.ejb.reservation.ReservationLocalHome
    com.sun.j2me.blueprints.smartticket.server.ejb.reservation.ReservationLocal
    com.sun.j2me.blueprints.smartticket.server.ejb.reservation.ReservationBean
    Container
    java.lang.Object
    false
    Reservation

    seats

    MovieScheduleEB
    MovieScheduleBean
    com.sun.j2me.blueprints.smartticket.server.ejb.schedule.MovieScheduleLocalHome
    com.sun.j2me.blueprints.smartticket.server.ejb.schedule.MovieScheduleLocal
    com.sun.j2me.blueprints.smartticket.server.ejb.schedule.MovieScheduleBean
    Container
    com.sun.j2me.blueprints.smartticket.server.ejb.schedule.MovieSchedulePK
    false
    MovieSchedule

    seating

    movieId

    theaterId

    showTimePatterns

    ejb/MovieShow
    Entity
    com.sun.j2me.blueprints.smartticket.server.ejb.show.MovieShowLocalHome
    com.sun.j2me.blueprints.smartticket.server.ejb.show.MovieShowLocal
    MovieShowBean

    TheaterScheduleEB
    TheaterScheduleBean
    com.sun.j2me.blueprints.smartticket.server.ejb.schedule.TheaterScheduleLocalHome
    com.sun.j2me.blueprints.smartticket.server.ejb.schedule.TheaterScheduleLocal
    com.sun.j2me.blueprints.smartticket.server.ejb.schedule.TheaterScheduleBean
    Container
    java.lang.Object
    false
    TheaterSchedule

    expirationDate

    MovieShowEB
    MovieShowBean
    com.sun.j2me.blueprints.smartticket.server.ejb.show.MovieShowLocalHome
    com.sun.j2me.blueprints.smartticket.server.ejb.show.MovieShowLocal
    com.sun.j2me.blueprints.smartticket.server.ejb.show.MovieShowBean
    Container
    com.sun.j2me.blueprints.smartticket.server.ejb.show.MovieShowPK
    false
    MovieShow

    seating

    movieId

    time

    theaterId

    TheaterEB
    TheaterBean
    com.sun.j2me.blueprints.smartticket.server.ejb.theater.TheaterLocalHome
    com.sun.j2me.blueprints.smartticket.server.ejb.theater.TheaterLocal
    com.sun.j2me.blueprints.smartticket.server.ejb.theater.TheaterBean
    Container
    java.lang.String
    false
    Theater

    zipCode

    address

    name

    id

    id

    findAllTheaters

    SELECT OBJECT(o) FROM Theater o

    findByZipCode

    java.lang.String

    SELECT DISTINCT OBJECT(o) FROM Theater o WHERE o.zipCode = ?1

    MovieRating-Movie

    MovieRating to Movie
    One

    MovieRatingBean

    ratedMovie

    UNIDIRECTIONAL MovieRatingBean
    One

    MovieBean

    Account-Reservation

    Account to Reservation
    One

    AccountBean

    reservations
    java.util.Collection

    UNIDIRECTIONAL AccountBean
    Many

    ReservationBean

    MovieShow-Movie

    MovieShow to Movie
    One

    MovieShowBean

    playedMovie

    UNIDIRECTIONAL MovieShowBean
    One

    MovieBean

    MovieRating-SyncMetaData

    MovieRating to SyncMetaData
    One

    MovieRatingBean

    syncMetaData

    UNIDIRECTIONAL MovieRatingBean
    One

    SyncMetaDataBean

    Account-SyncConduit

    SyncConduit to Account
    One

    SyncConduitBean

    account

    Account to SyncConduit
    One

    AccountBean

    movieRatingSyncConduit

    Reservation-MovieShow

    Reservation to MovieShow
    One

    ReservationBean

    show

    UNIDIRECTIONAL ReservationBean
    One

    MovieShowBean

    SyncConduit-SyncClient

    SyncClient to SyncConduit
    Many

    SyncClientBean

    syncConduit

    SyncConduit to SyncClient
    One

    SyncConduitBean

    syncClients
    java.util.Collection

    MovieSchedule-Movie

    MovieSchedule to Movie
    Many

    MovieScheduleBean

    movie

    UNIDIRECTIONAL MovieScheduleBean
    One

    MovieBean

    Theater-TheaterSchedule

    Theater to TheaterSchedule
    One

    TheaterBean

    schedule

    TheaterSchedule to Theater
    One

    TheaterScheduleBean

    theater

    SyncConduit-SyncMetaData

    SyncMetaData to SyncConduit
    Many

    SyncMetaDataBean

    syncConduit

    SyncConduit to SyncMetaData
    One

    SyncConduitBean

    syncMetaDataSet
    java.util.Collection

    TheaterSchedule-MovieSchedule

    TheaterSchedule to MovieSchedule
    One

    TheaterScheduleBean

    movieSchedules
    java.util.Collection

    MovieSchedule to TheaterSchedule
    Many

    MovieScheduleBean

    theaterSchedule

    Account-MovieRating

    Account to MovieRating
    One

    AccountBean

    movieRatings
    java.util.Collection

    MovieRating to Account
    Many

    MovieRatingBean

    account

    MovieSchedule-MovieShow

    MovieSchedule to MovieShow
    One

    MovieScheduleBean

    shows
    java.util.Collection

    MovieShow to MovieSchedule
    Many

    MovieShowBean

    schedule

    SmartTicketFacadeBean
    *

    Required

    SmartTicketFacadeBean
    *

    Required

    TicketingBean
    *

    Required

    SynchronizingBean
    *

    Required

    SyncMetaDataBean
    *

    Required

    SyncConduitBean
    *

    Required

    SyncClientBean
    *

    Required

    AccountBean
    *

    Required

    MovieBean
    *

    Required

    MovieRatingBean
    *

    Required

    MovieRatingBean
    *

    Required

    ReservationBean
    *

    Required

    MovieScheduleBean
    *

    Required

    TheaterScheduleBean
    *

    Required

    MovieShowBean
    *

    Required

    TheaterBean
    *

    Required

    SmartTicketFacadeBean
    *

    Required

  15. Lan said

    Thưa thầy đây là nội dung của 2 file ejb-jar.xml và web.xml:
    http://www.mediafire.com/?2udtnk3n2w2
    http://www.mediafire.com/?tfmqyohtxm1

  16. JVThanh said

    Em Chào Thầy!
    trong bài 2, sau khi em deploy EJB module thì start được server, nhưng sau khi tắt đi deploy lại thì có lỗi
    JBoss Application Server Start Failed. JNP service port 1099 is already in use.
    Lỗi này em có xem trên mạng, và làm theo một vài hương dẫn, nhưng vẫn không được.
    Mong Thầy xử lý lỗi này giúp em.
    Em cảm ơn thầy.

  17. vovanhai said

    Em tắt thế nào? Em nên nhấn Ctrl-C để nó shutdown jboss đã. Hoặc nếu nó không shutdown được thì và Task Manager mà End Process java đi.

  18. caovthang said

    Chào thầy Hải!
    trong bài số 4. Khi em triển khai, trong phần client thì xuất hiện nỗi ở dòng
    Object ref = ctx.lookup(“SinhVien”); là bound not bound
    em đã add Library
    em kiểm trong file ejb-jar.xml của phần server vẫn là: SinhVien
    thầy kiểm tra xem đó là lỗi gì hoặc em chưa làm công đoạn nào?
    em cảm ơn

  19. Qing Ying said

    Thầy ơi ,cho e xin link download Bài 08 (CMR Many-to-Many)? E cảm ơn Thầy ạ!

  20. Thầy ơi! Link bài 08(CMR Many-to-Many) không có thầy ơi! Thầy share cho tụi em với!

  21. HoangThanh said

    Thầy Hải cho em hỏi 1 vấn đề về getRealpath()

    Hiện tại em xài jboss server và EJb. Em muốn lưu file vào 1 thư mục của em. Nhưng khi xài getServletContext().getRealPath(“”) thì em server in ra đường dẫn :

    D:\jboss-4.2.3.GA\server\default\.\tmp\deploy\tmp22768Enter priseApplication1-war-exp.war\uploads

    Mặc dù applications của em nằm tại:

    C:\Users\StefenGratz\Documents\NetBeansProjects\En terpriseApplication1\EnterpriseApplication1-war…

    Xin thầy chỉ giáo như thế nào để lấy đc đường dẫn như trên ạ. Vì nếu đường dẫn theo jboss thì chỉ xài đc 1 lần khi run.Qua lần sau nó tạo cái temp mới rùi.

    Em cũng thử test = glassfish và tomcat = cách tạo app mới thì địa chỉ lấy đúng chứ ko như xài jboss

  22. Tung Nguyen said

    Thưa thầy! em được hướng dẫn dùng jboss_4_0.dtd và jbosscmp_jdbc_4_0.dtd để hỗ trợ bung code. Giờ cái jboss của em bị chút lỗi. Em muốn add lại jboss nhưng lại quên mất cách config 2 file này. Thầy có thể hướng dẫn em được không!
    Cảm ơn thầy!

  23. Nguyen Van Ba said

    Thua Thay, em dang hoc ejb va em khong the trien khai duoc ebj bang Jboss, mong Thay giup do !…

  24. Le Duong said

    e chào Thầy ạ! Thầy ơi cho em hỏi với em làm 1 Login = java. Em mặc dù em đã nhập đúng User và cả Pass nữa nhưng Em ko hiểu sao lại ko đăng nhập vào csdl được và em muốn viết dòng lệnh nếu đăng nhập không đúng thì thông báo là “Đăng nhập ko thành công” nhưng chưa được. Em mong Thầy giúp đỡ. Và đây là code của em.: public void actionPerformed(ActionEvent ae){
    //bat su kien khi kich vao button Cancel
    if(ae.getSource()==cancel_bt){
    System.exit(0);
    }
    //bat su kien khi kich vao button REGISTER
    if(ae.getSource()==register_bt){
    //neu chua nhap User va Password
    if((name_tf.getText().equals(“”))||(password_tf.getText().equals(“”))){
    JOptionPane.showMessageDialog(new JFrame(),
    “Bạn hãy nhap cac thong tin”,”ERROR MESAGE”,
    JOptionPane.ERROR_MESSAGE);
    }
    //khi da nhap User va Password
    else{
    try{
    ConnectODBC_ConString con = new ConnectODBC_ConString();
    ResultSet rs = con.GetResultSet(“NGUOIDUNG”);
    while(rs.next())
    {
    if(name_tf.getText().compareTo(rs.getString(“USERNAME”))==0 &&
    password_tf.getText().compareTo(rs.getString(“PASSWORD”))==0){
    JOptionPane.showMessageDialog(new JFrame(),
    “Bạn đã đăng nhập thành công”,”Sucessful Message”,
    JOptionPane.OK_OPTION);
    MainClass main = new MainClass(“Quản Lý Vật Liệu Xây Dựng”,700,600);
    main.show();
    this.setVisible(false);
    rs.close();
    con.Close();
    return;
    }
    else {

    JOptionPane.showMessageDialog(new JFrame(),
    “Bạn đã đăng nhập thất bại”,”Fail Message”,
    JOptionPane.OK_OPTION);
    }
    }
    }catch (Exception ex) {
    Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex);
    }
    }
    Em muốn nhờ Thầy việc nữa là: em và các bạn rất mong được tham khảo những bài tập mẫu quý báu của Thầy. Mong hồi âm của Thầy! Em cảm ơn Thầy! Chúc Thầy sức khỏe, hạnh phúc ạ!

  25. atula said

    thưa thầy cho e xin link down bài 8 Many-To-Many được ko thầy?

  26. Võ Văn Hải said

    1. so sánh 2 đối tượng bạn dùng phương thức equals thay vì ==.
    2. Kiểm tra đăng nhập thị bạn dùng if(rs.next) là được, sao lại dùng while.
    3. Bạn kiểm tra field trong db là varchar hay char.

  27. Le Duong said

    Thưa Thầy Em đã sửa while(rs.next) => if(rs.next) rồi và field db của em là varchar. Nhưng em chưa hiểu ý 1 của Thầy là so sánh ư đối tượng dùng equals em xin hỏi có phải Thầy đang nói ở dòng if(name_tf.getText().compareTo(rs.getString(“USERNAME”))==0 &&
    password_tf.getText().compareTo(rs.getString(“PASSWORD”))==0){
    JOptionPane.showMessageDialog(new JFrame(),
    Thầy bảo em thay đổi so sánh ở đây là equals? Nhưng em chưa biết sửa như nào Thầy sửa dùm em để em hiểu rõ hơn Thầy nhé! Em cảm ơn Thầy ạ!

  28. Le Duong said

    Cảm ơn Thầy đã chỉ dẫn ạ! Theo lời Thầy Em đã làm đc form Login rồi ạ! Em cảm ơn Thầy nhiều ạ!

  29. Le Duong said

    Em chào Thầy ạ!
    Thầy ơi cho Em hỏi là Em muốn hiển thị dữ liệu ở dạng lưới theo hàng và theo cột. Nhưng lại báo lỗi là:
    Exception in thread “main” java.lang.ClassCastException: DTO.T03_DMHH cannot be cast to java.util.Vector
    at javax.swing.table.DefaultTableModel.justifyRows(DefaultTableModel.java:251)
    at javax.swing.table.DefaultTableModel.setDataVector(DefaultTableModel.java:207)
    at javax.swing.table.DefaultTableModel.(DefaultTableModel.java:142)
    at javax.swing.JTable.(JTable.java:647)
    at DTO.NewClass.main(NewClass.java:46)
    Java Result: 1
    /**********************************/
    Còn đây là code ạ:
    Vector rowData = new Vector();
    try{
    ConnectODBC_ConString conDSN=new ConnectODBC_ConString();
    ResultSet rs=conDSN.GetResultSet(“T03_DMHH”);
    while(rs.next()) {

    T03_DMHH hh = new T03_DMHH(rs.getString(“MAHANG”),
    rs.getString(“TEN”),rs.getString(“QUYCACH”),
    rs.getString(“DVT”),rs.getFloat(“GIABAN”),
    rs.getInt(“SLTON”),rs.getFloat(“TGTON”));
    rowData.add(hh);
    }
    rs.close();
    conDSN.Close();
    }catch(Exception eLoad)
    {
    eLoad.printStackTrace();
    }
    // if(rowData.size() > 0){
    T03_DMHH hh = (T03_DMHH)rowData.get(0);
    Vector colData = new Vector(Arrays.asList(hh.getMaHang(),hh.getTenHang(),
    hh.getQuyCach(),hh.getDVT(),Float.toString(hh.getGiaBan()),
    Integer.toString(hh.getSLTon()),Float.toString(hh.getTGTon())));
    rowData.add(colData);
    // }

    String[] columnNames = {“Mã Hàng”,”Tên Hàng”,”Quy Cách”,
    “Đơn vị tính”,”Giá Bán”,”Số lượng tồn”,”Tổng gtri tồn”};

    Vector columnNamesV = new Vector(Arrays.asList(columnNames));

    JTable table = new JTable(rowData, columnNamesV);
    JFrame f = new JFrame();
    f.setSize(300, 300);
    f.add(new JScrollPane(table));
    f.setVisible(true);
    Mong Thầy giúp đỡ ạ! Cảm ơn Thầy nhiều ạ!

  30. Võ Văn Hải said

    Để add data vào jtable, bạn làm như sau:

    String[] columnNames = {“Mã Hàng”,”Tên Hàng”,”Quy Cách”,“Đơn vị tính”,”Giá Bán”,”Số lượng tồn”,”Tổng gtri tồn”};
    DefaultTableModel dtm=new DefaultTableModel(columnNames,0);
    JTable table=new JTable(dtm);
    //bây giờ bạn duyệt qua ResultSet để thêm
    while(rs.next()){
    String []row={rs.getString(1),rs.getString(2),...,rs.getString(7)};
    dtm.addRow(row);
    }

    Xem thêm tại đây

  31. Le Duong said

    Thưa Thầy Em đã đọc tài liệu Thầy hướng dẫn. Nhưng có một phần mà Em chưa hiểu rõ dòng lệnh
    for(Lophoc lh:lst). Thầy nói cho Em hiểu rõ hơn được chứ ạ!
    Và Thầy à Thầy cho Em hỏi với là: Phần mà điền dữ liệu từ bảng lên JTable í ạ. Khi dữ liệu là Date,và Float
    không phải String thì em phải dùng câu lệnh như thế nào mới đúng ạ?
    Em cảm ơn Thầy nhiều ạ!
    Chúc Thầy và gia đình sức khỏe và chúng em sẽ mãi có Thầy giúp đỡ nhất là trên con đường học ạ!
    Cảm ơn Thầy!

  32. Le Duong said

    1. à Thầy ơi em sử dụng cậu lệnh này:
    for(T06_PNK pnk:lst){
    String []row = {pnk.getMSPNK(),pnk.getMSDATHANG(),
    String.valueOf(pnk.getNGAY()),String.valueOf(pnk.getPHI())};
    dtm.addRow(row);

    để điền dữ liệu lên JTable khi dữ liệu là kiểu khác không phải String được ko ạ?
    2. Thầy ơi ở sự kiện tableChanged có dòng lệnh String updateFile = (column==1?“tenLop”:“tenGVCN”);
    Nhưng khi ở bảng của Em có nhiều hơn 3 trường là Trường MSPNK, MSDATHANG, NGAY và PHI thì em phải sử dụng câu lệnh nào vào dùng như nào ạ?
    Em cảm ơn Thầy!

  33. Le Duong said

    Thầy ơi sao Em làm theo như bài tham khảo của Thầy không có lỗi nhưng nó chỉ hiện lên Form thôi
    chứ nó chưa hiện đc bảng và chưa hiện được dữ liệu lên là tại sao hả Thầy? Thầy chỉ giúp Em nha!

  34. Võ Văn Hải said

    Em thêm dữ liệu vào trước!

  35. Le Duong said

    Thưa Thầy, Thầy cho em hỏi với ạ!
    Em đang làm với JTable Creat Read Update Delete như theo bài mẫu của Thầy nếu csdl giống như Thầy
    thì bài chạy được không lỗi. Nhưng khi em áp dụng vào bài của Em có 4 trường:
    MANCC nchar(10)
    TENNCC nchar(50)
    DIACHI nchar(50)
    TELL nchar(11)
    NODK float

    nhưng khi chạy chương trình thì lại báo lỗi:
    Exception in thread “main” java.lang.IllegalArgumentException: Row index out of range
    at javax.swing.JTable.boundRow(JTable.java:2106)
    at javax.swing.JTable.setRowSelectionInterval(JTable.java:2129)
    at CRUD_Database.JTableCRUD_DMNCC.(JTableCRUD_DMNCC.java:60)
    at CRUD_Database.JTableCRUD_DMNCC.main(JTableCRUD_DMNCC.java:106)

    ở dòng 60: table.setRowSelectionInterval(curPos, curPos);
    //private int curPos=0; Vi tri hien tai cua dong tren luoi
    ở dòng 106: public static void main(String[] args) throws Exception{
    new JTableCRUD_DMNCC().setVisible(true);
    }
    Thầy xem dùm em với ạ! Em cảm ơn Thầy nhiều a!

  36. Võ Văn Hải said

    Bài mẫu có 3 fields, bài của bạn có 4 fields mà bạn không chịu sửa lại index nên nó bị vượt cái index rồi.

  37. Le Duong said

    Thầy ơi Em xin lỗi! Vì Thầy chỉ cho Em lỗi sai rồi mà Em tìm mà không hiểu phải sửa index ở chỗ nào. Em cũng ngại lắm. Nhưng em thấy nếu có một người tận tình giúp đỡ nhất là về học vấn thì là rất quý rồi nên Em cũng không ngại dấu dốt xin nhờ Thầy chỉ rõ hơn cho Em cách sửa. Và Em còn dốt nhiều lắm nên Em sẽ phải làm phiền Thầy nhiều lần nữa em Cảm ơn Thầy nhiều. Em chúc Thầy sức khỏe và mãi là người Thầy tận tình nhất là với những người Sinh Viên không có điều kiện phải tự học, tự tìm hiểu.
    Cám ơn Thầy!

  38. phuog said

    Em chào thầy ạ. Thầy ơi thầy làm ơn chỉ giúp em cách giải quyết lỗi này được không ạ.
    Initial deploying MySweetHome to D:\Ki4\ep\MySweetHome\dist\gfdeploy\MySweetHome
    Completed initial distribution of MySweetHome
    deploy?path=D:\Ki4\ep\MySweetHome\dist\gfdeploy\MySweetHome&name=MySweetHome&force=true failed on GlassFish Server 3
    D:\Ki4\ep\MySweetHome\nbproject\build-impl.xml:304: The module has not been deployed.
    BUILD FAILED (total time: 4 seconds)

    Và ở trong build-impl.xml là:

    Em cảm ơn thầy nhiều lắm ạ!

  39. Võ Văn Hải said

    Bạn đưa lỗi như vầy thì thua, không biết nổi.

  40. haxuanlac said

    thưa thầy cho em hỏi là thầy có thể có bài hướng dẫn lập trình EJB với server là Glassfish được không ạ?

  41. haxuanlac said

    em làm như thầy hướng dẫn nhưng tại sao em trong phần Configuration file không thấy xuất hiện file EJB-JAR.xml vậy ạ?em cảm ơn thầy

  42. hoaianhit said

    Cảm ơn những file giảng thầy post, lúc trên lớp thầy dạy nhanh e ko hiểu, sau này em mò tự mua sách học cả buổi ko ra, cuối cùng e lên google search hoài mầy ngày lại ra đúng trang của thầy, tìm một lúc lại ra mấy bài này… cuối cùng đi lại cũng là ở thầy… cảm ơn thầy nhiều… hahahh. Giờ mới biết thầy hay

  43. HoangKhoi said

    Hi thầy..thầy có thể cho em xin mấy cái đề pretest môn EJB không thầy..:D

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.