2016-08-31 4 views
1

Я думал, что было бы легко заменить компонент JSF компонентом CDI. Но это медленный старт. Очень медленно.Как использовать CDI и JSF на Tomcat 8.5

Я использую Tomcat 8.5 и JSF 2.2, и я пытаюсь использовать CDI. Я пробовал разные конфигурации с разными результатами, но ничего не работает, поэтому я следую ориентации в http://balusc.omnifaces.org/2013/10/how-to-install-cdi-in-tomcat.html, и это то, что я получил.

SEVERE: A child container failed during start 
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/Workflow]] 
at java.util.concurrent.FutureTask.report(FutureTask.java:122) 
at java.util.concurrent.FutureTask.get(FutureTask.java:192) 
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:911) 
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:890) 
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:152) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1403) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1393) 
at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at java.lang.Thread.run(Thread.java:745) 

Мои конфигурации:

\ META-INF \ context.xml

<!-- language: lang-html --> 
<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 

<Context reloadable="true"> 
<Resources   cachingAllowed="true" cacheMaxSize="20000"  /> 

<Resource 
name="jdbc/FlowDB" 
auth="Container" 
type="javax.sql.DataSource" 
maxActive="100" 
maxIdle="30" 
maxWait="10000" 
username="xxxx" 
password="xxxxxxxxxxx" 
driverClassName="com.mysql.jdbc.Driver" 
url="jdbc:mysql://localhost:3306/flow?autoReconnect=true" /> 

<Resource 
name="mail/Session" 
auth="Container" 
type="javax.mail.Session" 
mail.smtp.host="localhost" 
mail.smtp.port="25" 
mail.smtp.auth="true" 
mail.smtp.user="[email protected]" 
mail.smtp.password="123456" /> 

<!-- Binding BeanManager to JNDI --> 
<Resource 
name="BeanManager" 
auth="Container" 
type="javax.enterprise.inject.spi.BeanManager" 
factory="org.jboss.weld.resources.ManagerObjectFactory"/> 

<!--        --> 

</Context> 

\ WEB-INF \ beans.xml

<?xml version="1.0" encoding="UTF-8"?> 
<beans 
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/beans_1_1.xsd" 
bean-discovery-mode="annotated" 
> 
</beans> 

Pom.xml

<build> 
<plugins> 
<plugin> 
<groupId>org.apache.maven.plugins</groupId> 
<artifactId>maven-compiler-plugin</artifactId> 
<version>3.1</version> 
<configuration> 
<source>1.8</source> 
<target>1.8</target> 
</configuration> 
</plugin> 

<plugin> 
<artifactId>maven-resources-plugin</artifactId> 
<version>2.7</version> 
<configuration> 
<encoding>UTF-8</encoding> 
</configuration> 
</plugin> 

<plugin> 
<groupId>org.apache.maven.plugins</groupId> 
<artifactId>maven-war-plugin</artifactId> 
<version>2.6</version> 
</plugin> 
</plugins> 
</build> 

<dependencies> 
<dependency> 
<groupId>org.glassfish</groupId> 
<artifactId>javax.faces</artifactId> 
<version>2.2.10</version> 
</dependency> 

<!-- Hibernate --> 
<dependency> 
<groupId>org.hibernate</groupId> 
<artifactId>hibernate-core</artifactId> 
<version>4.3.4.Final</version> 
</dependency> 

<dependency> 
<groupId>org.jboss.logging</groupId> 
<artifactId>jboss-logging</artifactId> 
<version>3.3.0.Final</version> 
</dependency> 
<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-validator --> 
<dependency> 
<groupId>org.hibernate</groupId> 
<artifactId>hibernate-validator</artifactId> 
<!--   <version>4.3.2.Final</version> --> 
<version>5.2.4.Final</version> 
</dependency> 
<!-- MySQL --> 
<dependency> 
<groupId>mysql</groupId> 
<artifactId>mysql-connector-java</artifactId> 
<version>5.1.30</version> 
<scope>provided</scope> 
</dependency> 

<!-- Spring --> 
<dependency> 
<groupId>org.springframework.security</groupId> 
<artifactId>spring-security-web</artifactId> 
<version>${spring.security.version}</version> 
</dependency> 
<dependency> 
<groupId>org.springframework.security</groupId> 
<artifactId>spring-security-config</artifactId> 
<version>${spring.security.version}</version> 
</dependency> 
<dependency> 
<groupId>org.springframework</groupId> 
<artifactId>spring-jdbc</artifactId> 
<version>${spring.version}</version> 
</dependency> 

<!-- SPRING DATA JPA - https://mvnrepository.com/artifact/org.springframework.data/spring-data-jpa --> 
<dependency> 
<groupId>org.springframework.data</groupId> 
<artifactId>spring-data-jpa</artifactId> 
<version>1.10.2.RELEASE</version> 
</dependency> 

<dependency> 
<groupId>commons-logging</groupId> 
<artifactId>commons-logging</artifactId> 
<version>1.1.1</version> 
</dependency> 

<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 --> 
<dependency> 
<groupId>org.apache.commons</groupId> 
<artifactId>commons-lang3</artifactId> 
<version>3.4</version> 
</dependency> 

<!-- https://mvnrepository.com/artifact/javax.enterprise/cdi-api 'INFO: CDI @ViewScoped bean functionality unavailable' http://weld.cdi-spec.org/ 
--> 

<dependency> 
<groupId>org.jboss.weld.servlet</groupId> 
<artifactId>weld-servlet</artifactId> 
<version>2.3.5.Final</version> 
</dependency> 

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

<!-- Primefaces Theme --> 
<!-- https://mvnrepository.com/artifact/org.primefaces.extensions/all-themes --> 
<dependency> 
<groupId>org.primefaces.themes</groupId> 
<!-- <artifactId>all-themes</artifactId> --> 
<artifactId>bootstrap</artifactId> 
<version>1.0.8</version> 
</dependency> 

<!-- Email --> 
<dependency> 
<groupId>javax.mail</groupId> 
<artifactId>mail</artifactId> 
<version>1.4.5</version> 
<scope>provided</scope> 
</dependency> 
<dependency> 
<groupId>org.apache.commons</groupId> 
<artifactId>commons-email</artifactId> 
<version>1.3.3</version> 
</dependency> 


<!-- JUnit » 4.12 --> 
<!-- https://mvnrepository.com/artifact/junit/junit --> 
<dependency> 
<groupId>junit</groupId> 
<artifactId>junit</artifactId> 
<version>4.12</version> 
</dependency> 

<!-- slf4j-log4j --> 

<dependency> 
<groupId>org.apache.logging.log4j</groupId> 
<artifactId>log4j-api</artifactId> 
<version>2.6.2</version> 
</dependency> 

<dependency> 
<groupId>org.apache.logging.log4j</groupId> 
<artifactId>log4j-core</artifactId> 
<version>2.6.2</version> 
</dependency> 

<!-- https://mvnrepository.com/artifact/org.webjars/font-awesome --> 
<dependency> 
<groupId>org.webjars</groupId> 
<artifactId>font-awesome</artifactId> 
<version>4.6.3</version> 
</dependency> 

</dependencies> 

Я подозреваю, что что-то может быть не так в моей pom.xml, или с Tomcat 8.5, или с чем-то другим. Но не так много осталось ...

Благодарим заранее.

+0

Вы можете попробовать, учитывая [эту ссылку] (https://musingsinjava.wordpress.com/2014/11/02/enabling-jsf -2-2-and-cdi-1-2-on-tomcat-8 /) – deosha

+0

Используйте tommee ... путь проще – Kukeltje

+0

Это исключение бесполезно. Это, как правило, сводное исключение, информирующее нас о том, что WAR не может быть развернута. Вы должны прочитать еще раз в журналах сервера, чтобы найти исключение основной причины, которое фактически привело к сбою развертывания. Эта часть представляет собой ответ на ваш вопрос. – BalusC

ответ

0

РЕШЕНИЕ

Кажется, что библиотека отсутствует, аннотации Java индексатор или Jandex, который я уже пробовал раньше, но не на правильном пути, очевидно. Не правильный набор библиотек и/или неправильная область.

после применить эти конфигурации

плюс зависимость ниже

<dependency> 
    <groupId>org.jboss</groupId> 
    <artifactId>jandex</artifactId> 
    <version>1.2.4.Final</version> 
</dependency> 

Кажется, чтобы начать работать нормально.

Так, соответствующий раздел моего pom.xml был:

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

<dependency> 
    <groupId>javax.enterprise</groupId> 
    <artifactId>cdi-api</artifactId> 
    <version>1.2</version> 
    <scope>provided</scope> 
</dependency> 

<dependency> 
    <groupId>org.jboss.weld.servlet</groupId> 
    <artifactId>weld-servlet</artifactId> 
    <version>2.3.5.Final</version> 
    <scope>runtime</scope> 
</dependency> 

<dependency> 
    <groupId>org.jboss</groupId> 
    <artifactId>jandex</artifactId> 
    <version>1.2.4.Final</version> 
</dependency> 
Смежные вопросы