【问题标题】:Payara MicroProfile 5.191 intermitted "converter not found" after clean, compile, package, runPayara MicroProfile 5.191 在清理、编译、打包、运行后中断“找不到转换器”
【发布时间】:2019-10-07 05:13:24
【问题描述】:

我有一个带有使用转换器的 JSF 页面的 Java EE 8 Web 项目(战争)。

当我尝试加载该页面时(在 mvn clean compile package 和 java -jar payara-micro-5.191.jar --deploy rbooking.war 之后)“有时”找不到转换器类。

要解决这个问题,唯一的办法就是重新编译war。

这里有一些细节:

pom 文件:

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

  <modelVersion>4.0.0</modelVersion>
  <groupId>sartorieinformatiche.it.rbooking</groupId>
  <artifactId>rbooking</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <failOnMissingWebXml>false</failOnMissingWebXml>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  </properties>

  <repositories>
    <repository>
      <id>prime-repo</id>
      <name>PrimeFaces Maven Repository</name>
      <url>http://repository.primefaces.org</url>
      <layout>default</layout>
    </repository>
  </repositories>

  <dependencies>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-email</artifactId>
      <version>1.5</version>
    </dependency>
    <dependency>
      <groupId>javax</groupId>
      <artifactId>javaee-api</artifactId>
      <version>8.0</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.primefaces</groupId>
      <artifactId>primefaces</artifactId>
      <version>7.0</version>
    </dependency>
    <dependency>
      <groupId>org.primefaces.themes</groupId>
      <artifactId>all-themes</artifactId>
      <version>1.0.10</version>
    </dependency>
    <dependency>
      <groupId>uaihebert.com</groupId>
      <artifactId>uaiCriteria</artifactId>
      <version>4.0.0</version>
    </dependency>
    <dependency>
      <groupId>org.omnifaces</groupId>
      <artifactId>omnifaces</artifactId>
      <version>3.3</version>
    </dependency>
  </dependencies>

  <build>
    <finalName>rbooking</finalName>
  </build>
</project>

转换器类:

package sartorieinformatiche.it.rbooking.control;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;
import javax.inject.Inject;

import sartorieinformatiche.it.rbooking.entity.Language;

@FacesConverter(value = "languageConverter", managed = true)
public class LanguageConverter implements Converter<Language> {

  @Inject
  private LanguageService languageService;

  @Override
  public String getAsString(FacesContext context, UIComponent component, Language language) {
    if (language == null) {
      return "";
    }

    return language.getId().toString();
  }

  @Override
  public Language getAsObject(FacesContext context, UIComponent component, String value) {
    if (value == null || value.trim().isEmpty()) {
      return null;
    }

    Long id = Long.parseLong(value);

    return languageService.findById(id);
  }

}

JSF 页面片段:

...<p:selectOneMenu id="language"
                 value="#{bookingBean.booking.language}"
                 converter="languageConverter">
  <f:selectItems value="#{bookingBean.allLanguages}"
                 itemLabel="#{language.description}"
                 itemValue="#{language.id}" />
    <p:column>
      <h:outputText value="#{language.description}" />
    </p:column>
</p:selectOneMenu>...

JSF页面加载时的错误:

  StandardWrapperValve[Faces Servlet]: Servlet.service() for servlet Faces Servlet threw exception
javax.faces.FacesException: Expression Error: Named Object: languageConverter not found.
    at com.sun.faces.util.Util.notNullNamedObject(Util.java:467)
    at com.sun.faces.application.applicationimpl.InstanceFactory.createConverter(InstanceFactory.java:456)
    at com.sun.faces.application.ApplicationImpl.createConverter(ApplicationImpl.java:502)
    at javax.faces.application.ApplicationWrapper.createConverter(ApplicationWrapper.java:420)
    at org.omnifaces.cdi.converter.ConverterManager.createConverter(ConverterManager.java:131)
    at org.omnifaces.cdi.converter.ConverterManager$Proxy$_$$_WeldClientProxy.createConverter(Unknown Source)
    at org.omnifaces.application.OmniApplication.createConverter(OmniApplication.java:83)
    at com.sun.faces.facelets.tag.jsf.ValueHolderRule$LiteralConverterMetadata.applyMetadata(ValueHolderRule.java:45)
    at com.sun.faces.facelets.tag.MetadataImpl.applyMetadata(MetadataImpl.java:40)
    at javax.faces.view.facelets.MetaTagHandler.setAttributes(MetaTagHandler.java:100)
    at javax.faces.view.facelets.DelegatingMetaTagHandler.setAttributes(DelegatingMetaTagHandler.java:92)
    at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.doNewComponentActions(ComponentTagHandlerDelegateImpl.java:453)
    at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:155)
    at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:111)
    at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:55)
    at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137)
    at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:179)
    at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:111)
    at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:55)
    at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137)
    at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:179)
    at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:111)
    at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137)
    at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:179)
    at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:111)
    at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137)
    at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:179)
    at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:111)
    at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:55)
    at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137)
    at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:179)
    at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:111)
    at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137)
    at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:179)
    at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:111)
    at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:55)
    at com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:52)
    at com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:46)
    at com.sun.faces.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:120)
    at com.sun.faces.application.view.FaceletViewHandlingStrategy.buildView(FaceletViewHandlingStrategy.java:358)
    at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:78)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:76)
    at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:199)
    at javax.faces.webapp.FacesServlet.executeLifecyle(FacesServlet.java:708)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:451)
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1628)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:339)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:209)
    at org.glassfish.tyrus.servlet.TyrusServletFilter.doFilter(TyrusServletFilter.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:251)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:209)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:755)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:575)
    at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:159)
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:371)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:238)
    at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:520)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:217)
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:182)
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:156)
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:218)
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:95)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:260)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:177)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:109)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:88)
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:53)
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:524)
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:89)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:94)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$0(WorkerThreadIOStrategy.java:90)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:114)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:569)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:549)
    at java.lang.Thread.run(Thread.java:748)

为了解决这个问题,我必须重新编译项目并且转换器已正确加载...

有解决问题的办法吗?

PS: 我正在使用 OpenJDK 运行时环境(构建 1.8.0_212-8u212-b03-0ubuntu1.16.04.1-b03)Linux Mint 18.3 Sylvia。

【问题讨论】:

  • JSF 与编译或创建战争无关,您的服务器和 java-ee-8 也不是很广泛。那么你如何实际创建你的战争并编译东西呢?纯命令行行家?当事情失败时,班级真的不在那里吗?
  • 谢谢 Kukeltje,我刚刚再次测试,应用程序现在运行没有错误,我已经停止它,修改了一个插入评论的类,然后我运行干净并从 IDE(NetBeans 11 在 OpenJDK 运行时环境 11.0.1+13-Ubuntu-3ubuntu116.04ppa1) 上运行,LanguageConverter.class 已插入战争但再次运行我收到:javax.faces.FacesException:表达式错误:命名对象:未找到语言转换器, clean / build / run 再次它工作......我不明白会发生什么......(同样的问题:mvn clean compile package)
  • 检查 payara 是否可以/应该在部署之间进行清理,以防止陈旧的东西挥之不去。检查另一个容器是否有同样的问题(如果你创建了minimal reproducible example,应该不难)
  • 问题似乎出在 payara micro 上,如果我尝试停止并运行服务器 20 次,12 次启动良好,8 次启动错误(未找到语言转换器)(根本没有重新编译)
  • 部署期间检查错误...

标签: jsf converters payara-micro


【解决方案1】:

Payara Micro 5.192 已解决该问题

【讨论】:

    猜你喜欢
    • 2020-10-07
    • 2021-10-07
    • 1970-01-01
    • 1970-01-01
    • 2021-09-22
    • 1970-01-01
    • 2015-07-24
    • 2017-11-04
    • 1970-01-01
    相关资源
    最近更新 更多