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.
- Bài 01 – Cấu hình JBoss 4.23GA trong Netbeans 6.7.1
- Bài 02 – Stateless Session Bean EJB2.1 với NetBeans 6.7.1
- Bài 03 – Stateful Session Bean EJB2.1 – Shopping Cart
- Bài 04 – Bean-Managed Persistence Entity Beans
- Bài 05 – Container-Managed Persistence Entity Beans
- Bài 06 – CMR One-to-One
- Bài 07 – CMR One-to-Many
- Bài 08 – CMR Many-to-Many
- Bài 09- Bean Managed Transaction
- Bài 10- Container Managed Transaction
- Bài 11- Message Driven Bean
- Bài 12- Message Driven Bean – Entity Beans
- 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.
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
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.
VCH said
link die roi`, ko vao` dc .
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
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
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
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 ạ?
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)
vovanhai said
lỗi khá rõ ràng rồi: Error loading deployment descriptors …
Bạn xem lại ejb-jar.xml nhé!
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.
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.
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?
vovanhai said
Em đã reference web app tới ejb app chưa? thử xem sao.
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
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
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.
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.
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
Qing Ying said
Thầy ơi ,cho e xin link download Bài 08 (CMR Many-to-Many)? E cảm ơn Thầy ạ!
nguyenthienthanh said
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!
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
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!
Nguyen Van Ba said
Thua Thay, em dang hoc ejb va em khong the trien khai duoc ebj bang Jboss, mong Thay giup do !…
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 ạ!
atula said
thưa thầy cho e xin link down bài 8 Many-To-Many được ko thầy?
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.
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 ạ!
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 ạ!
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 ạ!
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
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!
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!
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!
Võ Văn Hải said
Em thêm dữ liệu vào trước!
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!
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.
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!
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 ạ!
Võ Văn Hải said
Bạn đưa lỗi như vầy thì thua, không biết nổi.
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 ạ?
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
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
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