私のシステムからpdfドキュメントを入手する必要があります。私はこのためにApache Fopを使用しています - そして、このライブラリは2つのファイルを使って、構造とスタイリングを持つpdf - xslファイルとデータを持つXMLを生成しています。だから私はWebリソースからxslファイルを取得していますが、今はデータベースからのデータでxmlを生成する必要があります。私は、このインターフェイス持っ :私は、このソリューションを試してみましたEJBを使用したステートレスファクトリー
public interface PrintableDocument {
Object getJaxBOjbect(Long personId);
}
オブジェクトを取得するためのステートレス豆の一つだ、私はこのような10個の以上の豆が異なる文書ごとに異なるデータを取得する必要があります。
だから、@Stateless
@PrintableDocumentOneQualifier
public class PrintableDocumentOne implements PrintableDocument {
@Inject
private SomeRepository repository;
public Object getJaxBOjbect(Long personId) {
// Getting information from database
// formulating Object with data and returning it
}
}
今、私はこの1つのように工場を作りたい:
@Stateless
@LocalBean
public class PrintableDocumentsFactory {
@Inject
@PrintableDocumentOneQualifier
private PrintableDocument printableDocumentOne;
@Inject
@PrintableDocumentTwoQualifier
private PrintableDocument printableDocumentTwo;
private Map<String, PrintableDocument> map = new HashMap<>();
@PostConstruct
public void init() {
map.put("one", printableDocumentOne);
map.put("two", printableDocumentTwo);
}
public PrintableDocument getPrintableDocument(String type) {
return map.get(type);
}
}
そして、私はこのファクトリを使用するサービスBeanの:
@Stateless
@Local(DocumentService.class)
public class DocumentServiceBean {
@Inject
private PrintableDocumentsFactory factory;
public byte[] getPdf(InputStream xsl, Long id, String type) {
PrintableDocument printableDocument =
factory.getPrintableDocument(type);
Object jaxBOject = printableDocument.getJaxBObject(id);
//Use this object to get pdf and return it to web controller.
}
}
しかし、今、私は取得していますファクトリからのgetPrintableDocumentのnull問題は、ステートレスBeanが必要だと思うし、getPrintableDocumentメソッドが終了したときにEJBコンテナに戻ってくるということです。だから私の質問は:どうすればこのような状況を管理できますか?
EDIT 1:工場でのinitのコンストラクション注釈がありません。まだ問題があるのを修正しました。
EDIT 2:それはステートレスPrintableDocument
豆のひとつずつのインスタンスを保持するか、代わりにプールされたインスタンスを返します。私は私の工場に@Singleton
を持っているだろうか?システムが別のものを要求したときには、その要求に答えるために工場で戦略保持者マップを補充する必要があるからです。
'beans.xml'ファイルはありますか?もしあなたがそれを共有することができますか?さらに、どのコンテナに展開するのかを指定できますか? –
@ JohnAment beans.xmlには、インターセプタや代替手段などがないため空です。コンテナ - Wildfly 10.1.0.ファイナル。実際、このソリューションは '@ Inject'アノテーションでさえも機能しています。私は他のいくつかの問題がそれに関連していたのだろうかと思います。 –