- Siêu lớp và danh mục iOS/Objective-C
- object-c - -1001 lỗi khi NSURLSession vượt qua httpproxy và /etc/hosts
- java - Nhận địa chỉ url bằng lớp mạng
- ios - Âm thanh không phát trong thông báo đẩy
Câu hỏi của tôi liên quan đến giao dịch và ngoại lệ
要求:
Tôi có 10 bản ghi muốn chèn vào bảng cơ sở dữ liệu. Sau khi chèn mỗi bản ghi, tôi chèn dữ liệu vào một bảng khác. Vì vậy, nếu chèn vào bảng thứ hai không thành công, tôi muốn khôi phục bản ghi đó.
ví dụ. Giả sử rằng việc chuyển tiền mặt (từ tài khoản này sang tài khoản khác) được xử lý cho 10 người cùng một lúc.
Mã giả:-------------- Bắt đầu phương thức EJB
for(int i = 0; i < TransferRecords.length; i++)
{
thử
{
// Khấu trừ tiền mặt từ TransferRecord.accountFrom --- Bao gồm việc sử dụng Phiên ngủ đông
// Thêm tiền mặt vào TransferRecord.accountTo -- Bao gồm việc sử dụng Phiên ngủ đông
} bắt (ngoại lệ AppException)
{
// Khôi phục giao dịch chỉ cho lần chuyển cụ thể này (i)
// Nhưng ở đây khi tôi tìm bản ghi tiếp theo thì nó báo phiên đã đóng
}
}
----------Phương thức EJB kết thúc
Ở đây AppException được tạo bằng chú thích @ApplicaitonException(rollback=true).
Chức năng chúng tôi muốn là: Ngay cả khi giao dịch cho TransferRecord (giả sử 2) không thành công, tôi muốn dữ liệu được cam kết cho bản ghi 0, bản ghi 1, bản ghi 3, bản ghi 4 (v.v... nhưng không phải cho bản ghi 2)
Nhưng vấn đề ở đây là: khi TransferRecord 2 bị lỗi và khi tôi chuyển sang TransferRecord 3 thì gặp lỗi "session Closed".
Những nghi ngờ của tôi là: 1. Đây có phải là cách tiếp cận đúng đắn không? Hoặc tôi nên chạy vòng lặp for bên ngoài EJB (đối với mỗi TransferRecord) 2. Làm thế nào để đảm bảo rằng phiên không bị đóng nhưng giao dịch được khôi phục (chỉ đối với một giao dịch thất bại cụ thể)
提前谢谢你。
Tôi đang sử dụng EJB3, Hibernate 3.x, Jboss 4.2.x và tôi đang sử dụng các giao dịch được quản lý vùng chứa.
câu trả lời hay nhất
Đây có phải là một cách tiếp cận đúng đắn?
Không, với CMT, phương pháp của bạn chính là đơn vị giao dịch của bạn. Vì vậy, ở đây, tất cả của bạn Chuyển hồ sơ
Tất cả được xử lý trong cùng một giao dịch.
Nhân tiện, làm thế nào để khôi phục một giao dịch? bạn đang lan truyền Ngoại lệ thời gian chạy
Hoặc gọi setRollbackOnly()
? Tôi chỉ tò mò thôi.
Hay tôi nên chạy vòng lặp for (cho mỗi TransferRecord) bên ngoài EJB?
Tại sao lại ở bên ngoài? Không có gì buộc bạn phải làm điều đó. Nếu bạn muốn xử lý từng giao dịch trong giao dịch riêng của mình Chuyển hồ sơ
, bạn nên chuyển chúng chokhác Các phương thức EJB (mã bên dưới bị ảnh hưởng bởi câu trả lời này cảm hứng):
// giả sử processRecords được xác định trên MyStatelessRemote1 và tiến trình được xác định trên MyStatelessLocal1
@Stateless
@TransationAttribution(TransactionAttributionType.NOT_SUPPORTED)
lớp công khai MyStatelessBean1 triển khai MyStatelessLocal1, MyStatelessRemote1 {
@EJB
riêng tư MyStatelessLocal1 myBean;
public void processRecords(List objs) {
// Không có nội dung giao dịch nên không cần giao dịch ở đây
for(Đối tượng obj : objs) {
this.myBean.process(obj);
}
}
@TransationAttribution(TransactionAttributionType.REQUIRES_NEW)
quy trình void công khai (TransferRecord transferRecord) {
// Nội dung giao dịch được thực hiện trong giao dịch của chính nó
// ...
}
}
Làm cách nào tôi có thể đảm bảo rằng phiên đó không bị đóng nhưng giao dịch được khôi phục (chỉ dành cho giao dịch không thành công cụ thể)
Tôi nghĩ rằng tôi đã bao gồm phần đó.
Về java - ApplicationException - Java - Hibernate - Rollback liên quan, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/2029438/
Tôi đã gỡ lỗi với hợp đồng lỗi dịch vụ WCF mới tạo của mình và cuối cùng đã tìm thấy sự cố. Tôi xác định dịch vụ như thế này: [ServiceContract] giao diện công cộng IService1 { [O
Tôi đang cố gắng kiểm tra ứng dụng của mình nhưng tôi gặp phải lỗi sau: System.Web.HttpUnhandledException: Một ngoại lệ của loại 'System.Web.HttpUnhandledException' đã bị ném
In màn hình các lỗi mã và trích dẫn của tôi. Đã xảy ra lỗi với "ApplicationException" và tôi không biết cách khắc phục. sử dụng Hệ thống; sử dụng System.Net;
Tôi vừa thử nghiệm trên Mutex và viết đoạn mã sau. sử dụng System; sử dụng System.Collections.Generic; sử dụng System.Linq;
Trong kho lưu trữ tệp của tôi, khi phương thức InsertFile() được gọi, tôi sẽ đưa ra ngoại lệ sau: Khi vượt quá giới hạn kích thước tệp tải lên Khi vượt quá dung lượng lưu trữ Hiện tại tôi chỉ ném một ApplicationException với thông báo liên quan: p
Tôi đang cố gắng lấy ApplicationException và nó chỉ hiển thị thông báo khi đầu vào không phải là số. Đây là những gì tôi có bây giờ: static void getBookInfo(Book book) {
Câu hỏi của tôi liên quan đến giao dịch và ngoại lệ Yêu cầu: Tôi có 10 bản ghi để chèn vào bảng cơ sở dữ liệu. Sau khi chèn mỗi bản ghi, tôi chèn dữ liệu vào một bảng khác. Vì vậy, nếu chèn vào bảng thứ hai không thành công, tôi muốn khôi phục bản ghi đó. ví dụ. Giả sử việc chuyển tiền mặt được xử lý cho 10 người cùng một lúc
Để đưa ra các ngoại lệ, tôi thường sử dụng các lớp ngoại lệ có sẵn như ArgumentNullException và NotSupportedException. Tuy nhiên, đôi khi tôi cần sử dụng các ngoại lệ tùy chỉnh, trong trường hợp này tôi sẽ viết: class
Tôi đang phát triển mô hình chuyển giọng nói thành văn bản bằng C# trong VSCode. Mô hình sao chép chính xác tệp đầu tiên. Khi tôi thêm một tệp mới và cố gắng phiên âm, tôi gặp phải lỗi sau: Đã xảy ra ngoại lệ: CLR/System.ApplicationExceptionS
Tôi đang cố gắng nhận dạng giọng nói trên một tệp wav như thế này: var config = SpeechConfig.FromSubscription("mykey", "myzone");
Tôi đang cố gắng nhận dạng giọng nói trên một tệp wav như thế này: var config = SpeechConfig.FromSubscription("mykey", "myzone");
Chúng tôi gặp phải một kịch bản tương tự như sau: @ApplicationException(rollback = true) class UniqueConstraintVioated kéo dài RuntimeE
Ngoại lệ thời gian chạy của tôi @ApplicationException(rollback=false) lớp công khai UncheckedException mở rộng RuntimeExcepti
Theo như tôi biết, bạn phải luôn triển khai lớp ApplicationException cho các ngoại lệ tùy chỉnh của mình trong .NET. Gần đây tôi đã bắt đầu phát triển cho Windows Phone 7 nhưng tôi không thể tìm thấy lớp này. Bây giờ tôi nên sử dụng một lớp khác (cla
Tôi đã chạy thư viện Android của bên thứ 3 thông qua phiên bản IKVM của CodenameOne và đã nhập thành công tệp .dll đầu ra làm tham chiếu cho ứng dụng UWP của tôi trong Visual Studio. Trong khi cố gắng biên dịch
Tôi có một dịch vụ web có các phương thức đưa ra ngoại lệ tùy chỉnh của tôi. @WebMethod void someMethod(...) ném MyException Lớp MyException sử dụng @Applic
Tôi gọi phương thức EJB của tài khoản trong JSF Bean như thế này: try{ account.someFunction(...);
Tôi có đoạn mã sau trong thư viện c++/CLI để phát hiện các ngoại lệ không được quản lý và lấy lại chúng: Catch(const std::Exception &e) { String ^errorMessage = String
Tôi có một phương pháp ném ngoại lệ ứng dụng và khôi phục là đúng. Tôi đang tự hỏi liệu tôi có phải gọi ejbContext.setRollbackOnly() một cách rõ ràng không? Tài liệu ở đây nói rằng khi một ngoại lệ được đánh dấu bằng rollback=true
Tôi cần một số hướng dẫn về cách sử dụng ngoại lệ tốt nhất trong môi trường Java EE để phục vụ máy khách thông qua JAX-RS. Hiện tại, tôi có nhiều trường hợp ngoại lệ, tất cả đều mở rộng RuntimeException và sử dụng @Application
Tôi là một lập trình viên xuất sắc, rất giỏi!