汽車無運行進樣BeanClass到了ServletContextListener這就是我有一個是在開始了我的JBOSS 7.1服務器運行的ServletContextListener。這基本上監聽一個文件夾,並等待新文件,並等待新的Excel文件,並重新命名它們。在JBOSS 7.1
的Java
public class StagedFolderListener implements ServletContextListener {
@Inject
TableDao tableDao;
@Inject
ImportDatabase import;
public void contextInitialized(ServletContextEvent e) {
System.out.println("Listener starting...");
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run()
{
ProcessData();
}
}, 0, 10000);
}
public void contextDestroyed(ServletContextEvent e) {
System.out.println("Listener destroyed...");
}
public void ProcessData() {
String myDirectoryPath = "/home/myStoredFolder";
File dir = new File(myDirectoryPath);
for (File child : dir.listFiles()) {
String extension = "";
int j = child.getName().lastIndexOf('.');
if (j > 0) {
extension = child.getName().substring(j + 1);
}
if (fileIsOktoBeImported) {
// Import the file into the database
import.loadDatabase();
// Rename the file after processing
}
else
{
System.out.println("No processing required on file "
+ child.getName());
}
}
}
}
另外我還有一個類,它讀取Excel文件和數據仍然存在通過JPA和實體管理器數據庫。這工作正常,在自己的權利(我有它連接到GUI,可以從那裏進口),但我需要有打電話給我的ServletContextListener內導入進來新的Excel文件loadDatabase()方法。我試圖注入將ImportDatabase放入ServletContextListener並調用loadDatabase()方法,但EntityManager持久存在數據庫時,我得到一個空指針異常。
的Java
@Stateful
@LocalBean
public class ImportDatabase implements TableDao{
@Inject
private EntityManager em;
Row row = null;
FileInputStream inp;
Workbook wb;
public void loadDatabase()
{
Load data into the Database via JPA
}
更新Java來包括EntityManager的生產
的Java
@Stateful
@RequestScoped
public class Resources{
@PersistenceContext(type = PersistenceContextType.EXTENDED)
private EntityManager em;
@Produces
public EntityManager getEm() {
return em;
}
}
的是讓我叫在ServetContextListener loadDatabase()方法的最佳途徑?
任何幫助非常讚賞,
更新
注入ImportDatabase全班分成了ServletContextListener
錯誤
1時,即時通訊現在得到一個錯誤:15:06447 ERROR [org.apache.catalina.core.ContainerBase。[jboss.web]。[default-host]。[/ mast]](MSC服務線程1-1)Error configuri類com.ericsson.listener.StagedFolderListener的納克應用監聽器:java.lang.IllegalStateException:JBAS011048:無法在org.jboss.as.ee.component.BasicComponent.constructComponentInstance(BasicComponent.java:163)[JBoss的構建組件實例 -as-EE-7.1.1.Final.jar:7.1.1.Final] 在org.jboss.as.ee.component.BasicComponent.createInstance(BasicComponent.java:85)的JBoss-AS-EE-7.1。 1.Final.jar:7.1.1.Final] 在1 org.jboss.as.web.deployment.component.WebComponentInstantiator $(WebComponentInstantiator.java:57)的JBoss-AS-web的7.1.1.Final.jar :7.1.1.Final]
顯然即時在這裏做得不對......只是不知道是什麼,任何幫助,非常感謝!
乾杯
EntityManager通常不適用於CDI注入'@ Inject'。你有合適的製片人嗎? Wthout它的參考將'空' – kostja 2013-03-26 10:12:51
+1 kostja,你不能簡單@注入一個實體經理。您需要通過PU訪問它(通常這是在生產者方法上完成的)。爲什麼不給已經設置好的類注入servlet監聽器? – Perception 2013-03-26 10:19:31
剛剛在那裏更新 - 歡呼@Perception會嘗試 – user1694873 2013-03-26 10:21:37