2016-11-10 6 views
0

Мне нужно создать метод, который выполняется автоматически при запуске Tomcat. Я следил за учебником и мог реализовать метод, реализующий org.quartz.Job, поэтому он работает, но проблема в том, что он не позволяет мне вводить CDI компонента в этот метод, он просто прекращает работу без ошибок журнала.Использование Quartz2 и Bean CDI

Я узнал, что Кварц должен быть интегрирован с чем-то, чтобы использовать CDI, я уже пробовал DeltaSpike, и это дает мне ошибки, есть ли у кого-нибудь идеи?

Я использую:

  • JSF 2,2
  • CDI
  • Tomcat 8
  • Eclipse IDE
  • Maven

Мой класс Работа:

package com.sisRastrbov.schedule; 

import org.quartz.Job; 
import org.quartz.JobExecutionContext; 
import org.quartz.JobExecutionException; 

public class SchedulerJob implements Job { 

    @Override 
    public void execute(JobExecutionContext context) 
     throws JobExecutionException { 

     System.out.println("JSF 2 + Quartz 2 example"); 

    } 

} 

Мои pom.xml зависимости:

<dependencies> 
      <dependency> 
      <groupId>org.primefaces.themes</groupId> 
      <artifactId>bootstrap</artifactId> 
      <version>1.0.10</version> 
      <scope>compile</scope> 
     </dependency> 
     <!-- núcleo do hibernate --> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-core</artifactId> 
      <version>5.1.0.Final</version> 
      <scope>compile</scope> 
     </dependency> 

     <dependency> 
      <groupId>totalsat</groupId> 
      <artifactId>totalsat</artifactId> 
      <version>1.0</version> 
     </dependency> 

     <!-- implementação do Hibernate BeanValidator --> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-validator</artifactId> 
      <version>5.1.3.Final</version> 
      <scope>compile</scope> 
     </dependency> 
     <!-- https://mvnrepository.com/artifact/org.apache.axis/axis --> 
     <dependency> 
      <groupId>org.apache.axis</groupId> 
      <artifactId>axis</artifactId> 
      <version>1.4</version> 
     </dependency> 
     <!-- https://mvnrepository.com/artifact/org.jboss.spec.javax.xml.rpc/jboss-jaxrpc-api_1.1_spec --> 
     <dependency> 
      <groupId>org.jboss.spec.javax.xml.rpc</groupId> 
      <artifactId>jboss-jaxrpc-api_1.1_spec</artifactId> 
      <version>1.0.1.Final</version> 
     </dependency> 
     <!-- https://mvnrepository.com/artifact/xerces/xercesImpl --> 



     <!-- implementação do entityManager da Jpa --> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-entitymanager</artifactId> 
      <version>5.1.0.Final</version> 
      <scope>compile</scope> 
     </dependency> 
     <dependency> 
      <groupId>wsdl4j</groupId> 
      <artifactId>wsdl4j</artifactId> 
      <version>1.6.2</version> 
     </dependency> 
     <!-- https://mvnrepository.com/artifact/org.jboss.weld.servlet/weld-servlet --> 
     <dependency> 
      <groupId>org.jboss.weld.servlet</groupId> 
      <artifactId>weld-servlet</artifactId> 
      <version>2.3.1.Final</version> 
     </dependency> 


     <dependency> 
      <groupId>org.jboss</groupId> 
      <artifactId>jandex</artifactId> 
      <version>1.2.2.Final</version> 
      <scope>compile</scope> 
     </dependency> 

     <dependency> 
      <groupId>postgresql</groupId> 
      <artifactId>postgresql</artifactId> 
      <version>9.1-901-1.jdbc4</version> 
      <scope>compile</scope> 
     </dependency> 

     <!-- Mojarra (implementação do JSF 2) --> 
     <dependency> 
      <groupId>org.glassfish</groupId> 
      <artifactId>javax.faces</artifactId> 
      <version>2.2.9</version> 
      <scope>compile</scope> 
     </dependency> 

     <!-- omnifaces --> 
     <dependency> 
      <groupId>org.omnifaces</groupId> 
      <artifactId>omnifaces</artifactId> 
      <version>1.5</version> 
      <scope>compile</scope> 
     </dependency> 

     <!-- Primefaces Biblioteca de componentes --> 
     <dependency> 
      <groupId>org.primefaces</groupId> 
      <artifactId>primefaces</artifactId> 
      <version>5.3</version> 
     </dependency> 



     <!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-web --> 
     <dependency> 
      <groupId>org.springframework.security</groupId> 
      <artifactId>spring-security-web</artifactId> 
      <version>3.1.4.RELEASE</version> 
     </dependency> 


     <!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-config --> 
     <dependency> 
      <groupId>org.springframework.security</groupId> 
      <artifactId>spring-security-config</artifactId> 
      <version>3.1.4.RELEASE</version> 
     </dependency> 


     <!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-core --> 
     <dependency> 
      <groupId>org.springframework.security</groupId> 
      <artifactId>spring-security-core</artifactId> 
      <version>3.1.4.RELEASE</version> 
     </dependency> 


     <dependency> 
      <groupId>commons-logging</groupId> 
      <artifactId>commons-logging</artifactId> 
      <version>1.1.3</version> 
      <scope>compile</scope> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.commons</groupId> 
      <artifactId>commons-lang3</artifactId> 
      <version>3.1</version> 
      <scope>compile</scope> 
     </dependency> 

     <!-- API de servlet --> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>javax.servlet-api</artifactId> 
      <version>3.1.0</version> 
      <scope>provided</scope> 
     </dependency> 


     <!-- https://mvnrepository.com/artifact/javax.mail/mail --> 
     <dependency> 
      <groupId>javax.mail</groupId> 
      <artifactId>mail</artifactId> 
      <version>1.4</version> 
     </dependency> 

     <!-- listener --> 
      <!-- JSF 2 libraries --> 
     <dependency> 
      <groupId>com.sun.faces</groupId> 
      <artifactId>jsf-api</artifactId> 
      <version>2.1.11</version> 
     </dependency> 
     <dependency> 
      <groupId>com.sun.faces</groupId> 
      <artifactId>jsf-impl</artifactId> 
      <version>2.1.11</version> 
     </dependency> 

     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>jstl</artifactId> 
      <version>1.2</version> 
     </dependency> 

     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>servlet-api</artifactId> 
      <version>2.5</version> 
     </dependency> 

     <dependency> 
      <groupId>javax.servlet.jsp</groupId> 
      <artifactId>jsp-api</artifactId> 
      <version>2.1</version> 
     </dependency> 

       <!-- Tomcat 6 need this --> 
     <dependency> 
      <groupId>com.sun.el</groupId> 
      <artifactId>el-ri</artifactId> 
      <version>1.0</version> 
     </dependency> 

     <!-- Quartz scheduler framework --> 
     <dependency> 
      <groupId>org.quartz-scheduler</groupId> 
      <artifactId>quartz</artifactId> 
      <version>2.1.5</version> 
     </dependency> 

     <!-- Quartz need transaction --> 
     <dependency> 
      <groupId>javax.transaction</groupId> 
      <artifactId>jta</artifactId> 
      <version>1.1</version> 
     </dependency> 




    </dependencies> 

web.xml:

<?xml version="1.0" encoding="UTF-8" ?> 
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"> 

<context-param> 
    <param-name>primefaces.FONT_AWESOME</param-name>  
    <param-value>true</param-value> 
</context-param> 
<context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value> 
      /WEB-INF/applicationContext.xml 
     </param-value> 
</context-param> 
<session-config> 
    <session-timeout>-1</session-timeout> 
</session-config> 

<listener> 
     <listener-class> 
      org.quartz.ee.servlet.QuartzInitializerListener 
     </listener-class> 
    </listener> 

<listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 
    <listener> 
     <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class> 
    </listener> 
    <listener> 
     <listener-class>org.springframework.security.web.session.HttpSessionEventPublisher</listener-class> 
    </listener> 

    <listener> 
     <listener-class>org.jboss.weld.environment.servlet.Listener</listener-class> 
    </listener> 
    <resource-env-ref> 
     <resource-env-ref-name>BeanManager</resource-env-ref-name> 
     <resource-env-ref-type> 
      javax.enterprise.inject.spi.BeanManager 
     </resource-env-ref-type> 
    </resource-env-ref> 

    <welcome-file-list> 
     <welcome-file>Main.xhtml</welcome-file> 
    </welcome-file-list> 

    <servlet> 
     <servlet-name>Faces Servlet</servlet-name> 
     <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 

    </servlet> 
    <servlet-mapping> 
     <servlet-name>Faces Servlet</servlet-name> 
     <url-pattern>*.xhtml</url-pattern> 
    </servlet-mapping> 

    <mime-mapping> 
     <extension>woff</extension> 
     <mime-type>application/font-woff</mime-type> 
    </mime-mapping> 
    <mime-mapping> 
     <extension>woff2</extension> 
     <mime-type>application/font-woff2</mime-type> 
    </mime-mapping> 

    <filter> 
     <filter-name>springSecurityFilterChain</filter-name> 
     <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 
    </filter> 

    <filter-mapping> 
     <filter-name>springSecurityFilterChain</filter-name> 
     <url-pattern>/*</url-pattern> 
     <dispatcher>FORWARD</dispatcher> 
     <dispatcher>REQUEST</dispatcher> 
    </filter-mapping> 
</web-app> 

ответ

1

Ого, вы даже coud есть добавить все SpingFramework сделать это :) Это должно сделать работу:

@javax.ejb.Singleton 
@javax.ejb.Startup 
public class Startup { 
    @PostConstruct 
    public void start() { 
     System.out.println("start"); 
    } 
} 

pom.xml

<dependency> 
    <groupId>javax</groupId> 
    <artifactId>javaee-api</artifactId> 
    <version>7.0</version> 
    <scope>provided</scope> 
</dependency> 

держать это просто :) Вы должны думать о замене кварца с планировщиком JEE, если ваш случай использования соответствует http://docs.oracle.com/javaee/6/tutorial/doc/bnboy.html

+0

Спасибо за ответ Skay, я оценил свой ответ, но я мог бы решить эту проблему с апача Deltaspike. –

+0

You * не нужно дельтапик для решения этой проблемы. Вам нужен только CDI /, предоставляемый вашим контейнером JEE7 +. – skay

Смежные вопросы