什么是会话?为什么使用会话bean?
本人博客文章网址
什么是会话
有限的时间周期内,客户端和服务器之间的连接
为什么使用会话bean
因为EJB大部分服务都是专门提供给会话bean的
1. 并发和线程安全: 容器利用很多技术来自动确保开发者不必担心并发或线程安全的问题
2. 远程处理和Web服务的服务提供
3. 事务和安全管理
4. 拦截器
会话bean的规范
1. 至少具有一个业务接口(EJB3.1后可以不需要)
2. 会话bean必须是具体的, 不能把会话bean定义为final的, 或抽象的
3. 会话bean中必须有无参的构造器
4. 可以在会话bean类或者父类中定义业务方法和生命周期回调方法
5. 会话bean可以是另一个会话bean或者任何其他POJO的子类, 当是另一个会话bean 的子类时, 父类中定义的生命周期回调方法和依赖注入的注解都会被当前bean类继承
6. 会话bean方法不能以"ejb"开头, 所有业务方法都必须为公开的, 不能是final或者静态方法, 另外如果该会话bean是remote的话, 所有入参和出参都必须实现序列化接口
业务接口
1. 本地接口:@Local 相同的容器(JVM)实例中进行协同操作
2. 远程接口:@Remote 不同的容器(JVM)实例中进行协同操作 通过RMI进行访问
3. Web服务端点接口:@WebService 为无状态bean独有,可以把无状态bean暴露为基于SOAP的Web服务
处理多个业务接口:不能用一种以上的访问类型注解标记同一个接口,可以选择用父接口,然后子接口继承来避免代码重复
无状态会话bean
用于建模不维护会话状态的任务
有两种创建模式, 一种是池化, 由容器创建会话bean池, 并创建相应数量的会话bean示例, 并对其进行管理; 另一种是单例模式(需要EJB3.1及以后的版本才支持)
注解:@Stateless 通知容器该类是无状态bean,容器会自动为bean提供:并发控制,线程安全,池化,事务管理等服务
有状态会话bean
用于建模需要维护会话状态的任务,EJB容器会为我们保持会话的状态
必须有使用@Remove注解的方法
注意项:适当选择会话的数据,尽量使用占有资源小的数据;记得使用钝化和删除
替代方式:如果是Web应用,使用HttpSession来维护状态
会话bean最佳实现
1. 选择会话bean类型, 即是有状态bean还是无状态bean
2. 分析会话bean接口类型(@Local,@Remote)
3. 不要把有状态会话bean注入无状态会话bean或者Servlet中
4. 分割横切事务项(使用拦截器AOP来处理)
5. 有状态会话bean中储存的数据类型(慎重选择)
6. 有状态会话bean必须定义@Remove注解的方法
Atas ialah kandungan terperinci 什么是会话?为什么使用会话bean?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Siri Xiaomi Mi 15 dijangka akan dikeluarkan secara rasmi pada bulan Oktober, dan nama kod siri penuhnya telah didedahkan dalam pangkalan kod MiCode media asing. Antaranya, perdana Xiaomi Mi 15 Ultra diberi nama kod "Xuanyuan" (bermaksud "Xuanyuan"). Nama ini berasal daripada Maharaja Kuning dalam mitologi Cina, yang melambangkan bangsawan. Xiaomi 15 diberi nama kod "Dada", manakala Xiaomi 15Pro dinamakan "Haotian" (bermaksud "Haotian"). Nama kod dalaman Xiaomi Mi 15S Pro ialah "dijun", yang merujuk kepada Maharaja Jun, tuhan pencipta "The Classic of Mountains and Seas". Sarung siri Xiaomi 15Ultra

Prakata: Syarikat mempunyai projek yang sedang tergesa-gesa, dan beberapa keperluan projek adalah sama dengan beberapa fungsi projek sebelumnya Untuk mempercepat dan memperkenalkan secara langsung beberapa modul dalam projek maven berbilang modul sebelumnya dalam bentuk pakej jar Projek baru dilancarkan Walaupun ia menjimatkan banyak masa pembangunan, ia juga menyebabkan projek itu perlu mengimport kebergantungan yang berkaitan dengan balang projek, menyebabkan projek menjadi kembung dan lambat dimulakan. Adakah terdapat cara untuk membuat projek memuatkan hanya kacang yang diperlukan? Sudah tentu, kita boleh mengubah suai kod sumber secara langsung dan membungkusnya semula untuk menyelesaikan masalah, tetapi kaedah ini terlalu menyusahkan. Melalui kaedah Baidu, pertanyaan boleh menggunakan anotasi @ComponentScan pada kelas permulaan springboot untuk melaksanakan contoh kod @Componen

Sejak siri Huawei Mate60 mula dijual tahun lepas, saya secara peribadi telah menggunakan Mate60Pro sebagai telefon utama saya. Dalam hampir setahun, Huawei Mate60Pro telah melalui pelbagai peningkatan OTA, dan keseluruhan pengalaman telah dipertingkatkan dengan ketara, memberikan orang perasaan sentiasa baharu. Sebagai contoh, baru-baru ini, siri Huawei Mate60 sekali lagi menerima peningkatan besar dalam keupayaan pengimejan. Yang pertama ialah fungsi penghapusan AI baharu, yang boleh menghapuskan orang yang lalu-lalang dan serpihan secara bijak dan mengisi kawasan kosong secara automatik, kedua, ketepatan warna dan kejelasan telefoto kamera utama telah dinaik taraf dengan ketara. Memandangkan ia adalah musim kembali ke sekolah, siri Huawei Mate60 juga telah melancarkan promosi musim luruh: anda boleh menikmati diskaun sehingga 800 yuan apabila membeli telefon, dan harga permulaan serendah 4,999 yuan. Produk yang biasa digunakan dan selalunya baru dengan nilai yang hebat

Pengenalan kepada kaedah menggunakan sesi untuk melaksanakan log masuk dan log keluar pengguna dalam rangka kerja Slim: Sesi ialah teknologi yang biasa digunakan dalam aplikasi web Ia boleh digunakan untuk menyimpan dan mengurus data berkaitan pengguna, seperti status log masuk pengguna . Sebagai rangka kerja PHP yang ringan, rangka kerja Slim menyediakan API mudah untuk mengendalikan sesi. Artikel ini akan memperkenalkan cara menggunakan sesi dalam rangka kerja Slim untuk melaksanakan fungsi log masuk dan log keluar pengguna. Untuk memasang rangka kerja Slim terlebih dahulu, kita perlu

1. Penciptaan projek Spring 1.1 Mencipta projek Maven Langkah pertama adalah untuk mencipta projek Maven juga berdasarkan Maven. 1.2 Tambah kebergantungan spring Langkah kedua ialah menambah sokongan Spring (konteks spring, spring-beans) pada projek Maven dan menambah kebergantungan dalam fail pom.xml. org.springframeworkspring-context5.2.3.RELEASEorg.springframeworkspring-beans5.2.3.RELEASE memuat semula dan menunggu pemuatan selesai. 1.3 Buat kelas permulaan Langkah ketiga ialah mencipta

1. Senario yang boleh digunakan Jika kita perlu menguruskan urutan permulaan kacang tertentu dalam semua hierarki aplikasi. Sebagai contoh, anda perlu memulakan kacang apabila aplikasi bermula. Jika kacang dalam perpustakaan awam kami digunakan oleh perkhidmatan pembangun lain, tetapi mereka perlu menyesuaikan kacang dalam beberapa senario, kami perlu memuatkan kacang di perpustakaan awam sebelum kacang tersuai ini. 2. Tiga kaedah pelaksanaan Dalam aplikasi SpringBoot, kami boleh mengguna pakai tiga kaedah berikut untuk mencapai pemuatan keutamaan kacang kami sendiri: 1. @Configuration anotation + @DependsOn anotation @Configuration annotation dalam SpringBoo

Apabila menggunakan rangka kerja spring, kita semua tahu bahawa jika kelas menggunakan kaedah suntikan kebergantungan seperti @Service dan @Autowire untuk merujuk objek lain, dalam kelas lain, instance kelas ini hanya boleh diperoleh melalui berat IOC spring, yang bergantung objek boleh dimulakan dengan betul, jika tidak, objek bergantung itu adalah batal. Jadi timbul persoalan, bagaimana cara mendapatkan kacang dalam bekas springioc (kacang urus spring) di kelas biasa. Kita semua tahu bahawa objek konteks ApplicationContext pada musim bunga adalah asas untuk mendapatkan kacang. Dalam springboot, kita boleh lulus

Kaedah menggunakan sesi (Sesi) untuk pengesahan pengguna dalam rangka kerja Slim Dalam aplikasi web, pengesahan pengguna ialah fungsi penting, yang memastikan hanya pengguna yang diberi kuasa boleh mengakses sumber terhad. Sesi ialah kaedah pengesahan yang biasa digunakan yang memastikan pengguna kekal disahkan sepanjang sesi dengan menyimpan maklumat identiti dan status pengguna. Rangka kerja Slim menyediakan alat dan perisian tengah yang mudah untuk mengendalikan sesi dan pengesahan pengguna. Di bawah ini kami akan memperkenalkan cara menggunakan sesi dalam rangka kerja Slim
