繁体   English   中英

“ Singleton Session Bean”,用于存储应用程序范围的信息Java EE 6

[英]“Singleton Session Bean” to store application wide informations Java EE 6

我在jboss-as-7应用程序服务器上编写了Java ee 6应用程序。 我想要一个“ Singleton Session Bean”,用于将应用程序范围的信息存储在“ mediaDataList”列表中。

无状态会话bean“ ClassA”将一些对象写入此列表,然后Web服务将读取“ mediaDataList”列表中的信息。

@Singleton
@ConcurrencyManagement(ConcurrencyManagementType.CONTAINER)
@Lock(LockType.WRITE)
public class MediaDataSafe {

    private final List<MediaData> mediaDataList = new ArrayList<MediaData>();

    @Inject
    Logger log;

    @PostConstruct
    void init() {
        // read from HD and store in mediaDataList
    }


    // just read the list...
    public List<MediaData> getMediaDataList() {
        return mediaDataList;
    }

    // write to list
    public void writeMediaDataSafe(...) {
        mediaDataList.add(auraMediaData);
    }
}


@Stateless
public class ClassA {

    @Inject
    MediaDataSafe mediaDataSafe;

    //write in list of singleton
    public void write(...) {
        mediaDataSafe.writeMediaDataSafe(...);
    }
}

@WebService(serviceName = "MyWebService", endpointInterface = "com.WebService")
public class MyWebService implements com.bla.WebService {

    //...

    @Inject
    transient MediaDataSafe mediaDataSafe;

    //read from list in singleton
    public MediaList getMediaList(...){
        mediaDataSafe.getMediaDataList(...);
    }
}

我的问题是,我的系统中似乎存在两个“ signleton bean”! 如果“ ClassA”将一些新值写入列表,则我的Web服务无法读取此新值。 Web服务始终返回相同的列表。 (它包含init上的状态!)

我怎么了 我在这里对“ Singleton Session Bean”有误解吗?

到目前为止,对我来说看起来还不错,因为每个应用程序实例化了一个Singleton,所以我想到可能导致所描述行为的唯一原因是朝着同一应用程序的多个部署方向发展。

仔细阅读Java EE 6教程的以下部分以发现问题可能会有所帮助:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM