2009-11-17 25 views
6

1.Cách sử dụng serialization trong ứng dụng web.Mục đích của việc tuần tự hóa trong ứng dụng web

2. Có cần thiết một bean mẫu có thể tuần tự hóa được không.

3.In tomcat việc sử dụng tập tin sessions.ser là gì ..

+2

Bạn có thể giải thích lý do tại sao các câu trả lời đã cho không thỏa mãn bạn? Bạn dường như đã thêm tiền thưởng một vài tuần sau khi câu trả lời được đăng, nhưng bạn dường như không trả lời/nhận xét về bất kỳ câu hỏi nào trong số họ. – BalusC

+1

có lẽ vì "bắt đầu một khoản tiền thưởng" có vẻ hấp dẫn :) – Bozho

+0

tất cả chúng ta chỉ là những kẻ tấn công internet. – Sneakyness

Trả lời

14

1) Đây là một tính năng phụ thuộc vào máy chủ ứng dụng, nhưng Servlet Spec nói rằng nếu thùng chứa servlet muốn hỗ trợ môi trường phân tán trên các trường hợp) và tương tự như vậy nó phải chấp nhận các đối tượng thực hiện Serializable và có thể di chuyển chúng. Tomcat cũng hỗ trợ lưu trữ trạng thái phiên trên máy chủ khởi động lại cho các đối tượng phiên được tuần tự hóa. Bạn có thể bật hoặc tắt tính năng này của Tomcat trong tệp conf/context.xml (xem chú thích ở đó).

2) Nó sẽ chỉ là neceesary cho một bean mẫu được Serializable nếu a) nó là phiên scoped và b) bạn đang sử dụng hoặc phân phối phiên hoặc một tính năng như Tomcat sử dụng để duy trì phiên mà đòi hỏi nó.

3) Tệp sessions.ser là tệp chứa các đối tượng được tuần tự hóa từ phiên. Tomcat sử dụng điều này để bảo vệ chúng trong suốt quá trình khởi động lại máy chủ nếu bạn đã cấu hình nó để làm như vậy (xem ở trên). Nói chung, tệp .ser là một đối tượng Java được tuần tự hóa, là một biểu diễn nhị phân của trạng thái của đối tượng.

1

Wow, rất nhiều câu hỏi mà không có nhiều bối cảnh.

Đối với số 1 của bạn, tôi giả sử bạn đang nói về việc tuần tự hóa mà bạn ám chỉ các điểm khác của bạn về tuần tự hóa Java, không phải serialization so với song song. Nếu vậy, nhiều ứng dụng web sẽ tuần tự hóa hoặc lưu trạng thái của các đối tượng để giữ cho nó bền. Độ bền đó có thể được sử dụng trên các yêu cầu HTTP (như trong quản lý phiên), để lưu trữ thông tin dài hạn hoặc để gửi qua "mạng" về mặt đảm bảo rằng tất cả các bên đều nhận được một bản sao thông tin đã nêu.

Người ta phải tự hỏi mình trong HTTP nếu đó thực sự là một ý tưởng tốt bởi thiết kế và quy mô không trạng thái là "tốt" và nếu có một cửa hàng sao lưu như DB tại sao DB không thực hiện công việc. Các hình thức đậu tôi sẽ đoán được sử dụng trong bản chất này như servlets sẽ vượt qua xung quanh thông tin biểu mẫu như descrbied.

12

Đối với câu hỏi đầu tiên và thứ hai của bạn, hãy xem số SO thread này. Về câu hỏi thứ 3 của bạn, sessions.ser là một phiên được đăng theo thứ tự. Tuy nhiên,

  1. Có, chúng tôi cần serialization bất cứ khi nào chúng tôi cần lưu giữ các đối tượng trong hệ thống tệp hoặc gửi các đối tượng qua dây. Bạn có thể nghĩ rằng trong một ứng dụng web, chúng tôi không nhất thiết phải làm điều đó. Nhưng máy chủ thường yêu cầu một thứ serializable trong trường hợp nó là cần thiết trong tương lai khi bạn chuyển sang một môi trường nhóm hoặc muốn chuyển đậu của bạn đến một thành phần từ xa, tức là thành phần EJB. Hoặc bạn có thể muốn lưu trữ đậu của bạn vào một phiên, vì lý do đó đậu của bạn nên được serializable.

  2. Có, vì lý do tương tự, đã nêu ở trên.

  3. sessions.ser là phiên được nối tiếp. Tomcat vẫn tồn tại nó, vì vậy nó có thể được phục hồi sau này. Bây giờ bạn đã có một ý tưởng rằng tại sao chúng ta cần các bean có thể tuần tự hóa được, vì bạn có thể muốn lưu trữ các đối tượng bean vào phiên làm việc và phiên Tomcat vẫn tồn tại đối với hệ thống tệp, tức là session.ser. Vì vậy, đậu của bạn phải thực hiện Serializable để họ có thể được duy trì/phục hồi với phiên.

Bằng cách này, tính chính xác của sự bền bỉ và phục hồi của hạt phụ thuộc vào việc triển khai chính xác Serializable. Tôi khuyên bạn nên đọc các chủ đề liên quan trong Java hiệu quả.

3

Phiên (và tất cả các thuộc tính được thêm vào nó) cần phải được tuần tự hóa nếu vùng chứa muốn lưu phiên. Điều này có thể có hai lý do:

  1. phiên phải được chuyển đến một nút khác của một cụm cân tải
  2. phiên cần phải được hoán đổi vì bộ nhớ thấp

Một lý do khác có thể là để chuyển các thuộc tính yêu cầu từ một ứng dụng web sang một ứng dụng web khác bằng cách sử dụng ngữ cảnh chéo. Cả hai ứng dụng web đều có các trình nạp lớp khác nhau nên việc truyền đơn giản sẽ không hoạt động.

Vì vậy, tomcat của bạn dường như ghi phiên vào tệp bằng cách sử dụng tuần tự hóa. Một bean mẫu thường được lưu trữ trong phiên làm việc, vì vậy có, nó phải được tuần tự hóa.

Và cuối cùng, có thể có nhiều lý do hơn để có thể tuần tự hóa như trong bất kỳ ứng dụng nào khác. Bộ nhớ cache có thể cần nó để trao đổi nội dung bộ đệm (như ehcache có thể làm). Bất kỳ phần dữ liệu nào khác có thể được tuần tự hóa để lưu trữ dưới dạng blob trong cơ sở dữ liệu, ...

0
  1. Một mô tả khá tốt từ wikipedia:

    serialization có một số lợi thế . Nó cung cấp:

    • một phương pháp bền bỉ đối tượng đó là thuận tiện hơn viết tài sản của họ vào một văn bản tập tin trên đĩa, và tái lắp ráp họ bằng cách đọc lại này trong
    • một phương pháp phát hành. cuộc gọi thủ tục từ xa, ví dụ như trong SOAP
    • một phương pháp để phân phối các đối tượng, đặc biệt là trong phần mềm componentry
      như COM, CORBA vv
    • một phương pháp để phát hiện những thay đổi trong thời gian varyin g dữ liệu.

    Ví dụ thế giới thực (đơn giản): Nói bạn tạo một cá thể người dùng trong java. Bây giờ bạn muốn hiển thị đối tượng này trong trình duyệt web bằng javascript. Một tùy chọn là tuần tự hóa đối tượng theo cách mà javascript có thể deserialize đối tượng (sử dụng biểu diễn mà cả java và javascript đều có thể hiểu) và hiển thị nó.

  2. Tùy thuộc vào những gì bạn cần làm với bean mẫu để xem liệu nó có phải là số thứ tự hay không.
  3. Tomcat Manager App là một trang web ứng dụng giúp bạn triển khai và quản lý các ứng dụng web khác tới tomcat.Tôi không phải là chuyên gia tomcat, nhưng Tôi nghĩ Người quản lý Tomcat cố gắng nhớ thông tin về các phiên được tạo bởi trang web ứng dụng mà họ đang quản lý. Nó cần phải nhớ thông tin này ngay cả khi quá trình tomcat là được khởi động lại. Vì vậy, Tomcat Manager tạo một tệp có tên là "Session.ser" , đây là một đại diện được sắp xếp theo thứ tự thông tin cần thiết để ghi nhớ về tất cả các phiên của ứng dụng được quản lý.
Các vấn đề liên quan