Kullanıcıların bir web arabiriminden "socketinfo" tabloları (bir veritabanında depolanan) ekleme/çıkarmalarını sağlayan bir Java EE uygulaması oluşturuyorum. Kullanıcı, web arayüzünden bir "socketinfo" etkinleştirirse, uygulama sunucusunun gelen paketler için bir soket dinleyicisi oluşturması ve verileri işlemesi gerekir. Kullanıcı "socketinfo" yu devre dışı bırakır veya silerse, dinleyici çıkarılmalıdır. Tüm ürün tek bir kulakta ve tercihen uyumlu bir şekilde bulunmalıdır. Ben kabul ama sorun haline koştum gibi yaklaşımlar şunlardır: Java EE: Soket dinleyicilerini dinamik olarak etki alanı modelinden oluşturma ve silme
- prizlerin bir JCA kaynak bağdaştırıcısı oluşturma ve dinleyici olarak MDBs kullanın. Burada karşılaştığım sorun, kullanıcı eklediğinde MDB'leri farklı soketlere program aracılığıyla nasıl dağıtacağımı anlayamıyorum.
Daemon iş parçacığını dikkatli bir eşitleme ile yöneten bir @ Singleton/@ Hizmet ejb'si oluşturun. Singleton ejb iş katmanına enjekte edilebilir, böylece CRUD işlemleri ve yuva manipülasyonu doğru iş akışında gerçekleşir. Buradaki problem, EJB'lerden gelen iplikler oluşturmanın kötü bir uygulama olarak kabul edildiğidir ve spesifik değildir (tekil yaşam döngüsü doğru şekilde ele alınmış ve uygun senkronizasyon mekanizmaları yürürlükte olsa bile).
Konuları, alan modeline (başka bir single?) Yerleştirin ve EJB'lerin modeli kullanmasını sağlayın. Uygulama sunucuları birden fazla sınıf yükleyiciye, genel olarak daha az konteyner desteğine sahip olma eğiliminde olduğundan, bu durumun en kötüsü de buydu.
Java EE'de bu durumu nasıl doğru şekilde ele alacağınız hakkında bir fikriniz var mı?
DÜZENLEME: Bu soruya bir uzantı: ewernli'nin çözüm 3'te önerdiği gibi bu soruna yaklaşmaya karar verdiğimi farz edersem, JCA'da (iç iş parçacıkları eklemek için özel bir arabirimle) bunu elde edemeyeceğim ne kazanırım? (iyi tasarlanmış) bir singleton olsun? Bir kaynak bağdaştırıcısı oluştururken korkunç bir görev gibi görünmüyor, tamamen önemsiz görünmüyor ve biraz zaman alıcı olabilir (ve belki diğer geliştiriciler için takip etmek daha da zor olabilir).
Bunu doğru olarak okudum - yuva dinleyicileri, yani Java EE kabından çalışma zamanında ServerSockets oluşturmak ve daha sonra önceden tanımlanmış şekilde soketlere ulaşan verileri yakalamak ve işlemek ister misiniz? –