java - URL 无法找到我的 Web 应用程序上下文 – Java Enterprise Beans - Wildfly

标签 java rest ejb wildfly

我有一个结合了 RESTful 服务和 MySQL 数据库的 EJB 应用程序。我想在我的 Wildfly 服务器上部署此应用程序。我已经配置了所有内容,到目前为止,当我想通过 Wildfly 服务器上的 Eclipse 启动应用程序时没有错误。问题是我无法通过浏览器访问资源 - 我想调用 http://localhost:8080/REST-EJB-ArticleService/v1/articles在我的浏览器中访问我的资源,但我得到 404。看来该应用程序未在我的网络服务器上发布。

以下是我启动应用程序时的输出摘录:

我通过右键单击项目启动应用程序 - 在服务器上运行(Wildfly 运行正常)

9:08:33,715 INFO [org.jboss.ws.common.management] (MSC service thread 1-6) JBWS022052: Starting JBossWS 5.1.9.Final (Apache CXF 3.1.12) 19:08:34,012 INFO [org.jboss.as.jpa] (MSC service thread 1-7) WFLYJPA0002: Read persistence.xml for primary 19:08:34,430 INFO [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-6) WFLYJCA0005: Deploying non-JDBC-compliant driver class com.mysql.jdbc.Driver (version 5.1) 19:08:34,445 INFO [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-6) WFLYJCA0005: Deploying non-JDBC-compliant driver class com.mysql.fabric.jdbc.FabricMySQLDriver (version 5.1) 19:08:34,445 INFO [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-3) WFLYJCA0018: Started Driver service with driver-name = mysql-connector-java-5.1.44-bin.jar_com.mysql.jdbc.Driver_5_1 19:08:34,445 INFO [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-5) WFLYJCA0018: Started Driver service with driver-name = mysql-connector-java-5.1.44-bin.jar_com.mysql.fabric.jdbc.FabricMySQLDriver_5_1 19:08:34,445 INFO [org.jboss.weld.deployer] (MSC service thread 1-8) WFLYWELD0003: Processing weld deployment MovieWebService.jar 19:08:34,508 INFO [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-4) WFLYJCA0001: Bound data source [java:/MySqlDS] 19:08:34,523 INFO [org.jboss.as.jpa] (ServerService Thread Pool -- 62) WFLYJPA0010: Starting Persistence Unit (phase 1 of 2) Service 'MovieWebService.jar#primary' 19:08:34,539 INFO [org.hibernate.jpa.internal.util.LogHelper] (ServerService Thread Pool -- 62) HHH000204: Processing PersistenceUnitInfo [ name: primary ...] 19:08:34,539 INFO [org.hibernate.validator.internal.util.Version] (MSC service thread 1-8) HV000001: Hibernate Validator 5.3.5.Final 19:08:34,601 INFO [org.infinispan.factories.GlobalComponentRegistry] (MSC service thread 1-7) ISPN000128: Infinispan version: Infinispan 'Chakra' 8.2.8.Final 19:08:34,633 INFO [org.jboss.as.ejb3.deployment] (MSC service thread 1-8) WFLYEJB0473: JNDI bindings for session bean named 'ArticleResourceEJB' in deployment unit 'deployment "MovieWebService.jar"' are as follows:

java:global/MovieWebService/ArticleResourceEJB!com.dev.ejbwebservice.ArticleResourceEJB > java:app/MovieWebService/ArticleResourceEJB!com.dev.ejbwebservice.ArticleResourceEJB java:module/ArticleResourceEJB!com.dev.ejbwebservice.ArticleResourceEJB java:global/MovieWebService/ArticleResourceEJB java:app/MovieWebService/ArticleResourceEJB java:module/ArticleResourceEJB

19:08:34,633 INFO [org.hibernate.Version] (ServerService Thread Pool -- 62) HHH000412: Hibernate Core {5.1.10.Final} 19:08:34,633 INFO [org.hibernate.cfg.Environment] (ServerService Thread Pool -- 62) HHH000206: hibernate.properties not found 19:08:34,633 INFO [org.hibernate.cfg.Environment] (ServerService Thread Pool -- 62) HHH000021: Bytecode provider name : javassist 19:08:34,680 INFO [org.hibernate.annotations.common.Version] (ServerService Thread Pool -- 62) HCANN000001: Hibernate Commons Annotations {5.0.1.Final} 19:08:34,789 INFO [org.jboss.weld.Version] (MSC service thread 1-2) WELD-000900: 2.4.3 (Final) 19:08:34,930 INFO [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 63) WFLYCLINF0002: Started client-mappings cache from ejb container 19:08:34,945 INFO [org.jboss.as.jpa] (ServerService Thread Pool -- 62) WFLYJPA0010: Starting Persistence Unit (phase 2 of 2) Service 'MovieWebService.jar#primary' 19:08:35,101 ERROR [stderr] (ServerService Thread Pool -- 62) Thu Sep 07 19:08:35 CEST 2017 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.

19:08:35,196 WARN [org.jboss.jca.core.connectionmanager.pool.strategy.OnePool] (ServerService Thread Pool -- 62) IJ000407: No lazy enlistment available for MySqlDS

但我希望在教程中出现类似的内容,一个链接,我可以在其中看到我的 ejb 正在哪个地址上运行。

enter image description here

这是我的 ejb 类:

@Path("/v1/articles")
@Stateless
public class ArticleResourceEJB
{

    @Inject
    private ArticleDAO dao;

    public ArticleResourceEJB()
    {
        System.out.println(ArticleResourceEJB.class.getName() + " created");
    }


    @POST
    @Consumes({"application/xml", "application/json"})
    public void insert(ArticleDTO user)
    {
        System.out.println("insert: " + user);

        dao.createArticle(user.getDescription(), user.getPrice());
    }


    @PUT
    @Consumes("application/xml")
    public void update(ArticleDTO dto)
    {
        System.out.println("update to " + dto);

        dao.update(dto.toArticle());
    }


    @DELETE
    @Path("{id}")
    public void delete(@PathParam("id") int id)
    {
        System.out.println("delete: " + id);

        // TODO
    }


    @GET
    @Produces({"application/xml", "application/json"})
    public List<ArticleDTO> findAll()
    {
        System.out.println("findAll()");

        List<Article> list = dao.findAll();
        List<ArticleDTO> result = ArticleDTO.toArticleDTOList(list);
        System.out.println("size = " + result.size());
        return result;
    }


    @GET
    @Path("{id}")
    @Produces("application/xml")
    public ArticleDTO findById(@PathParam("id") int id) 
    {
        System.out.println("findById(" + id + ")");

        Article article = dao.findById(id);
        return new ArticleDTO(article);
    }
}

最佳答案

看来您的上下文名称错误。我认为您部署的工件的名称(您的应用程序的名称)是“MovieWebService”,因此 url 应该类似于 localhost:8080/MovieWebService/pathToYourService/pathToMethod

不太确定它是否必须是 .jar ,我通常会将可部署工件设为 .war.ear部署到 Wildfly。

关于java - URL 无法找到我的 Web 应用程序上下文 – Java Enterprise Beans - Wildfly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46102015/

相关文章:

java - POP3Store 无法验证,仅在 Tomcat7 中(在单元测试中工作正常)

java - 无法对数组类型 char[] 调用 add(char)

Java - 通过 channel 传输大文件 - NIO

java - 资源定位器上的 Jaxrs 过滤器

java - ServletContextListener 调度程序执行任务 - 然后停止 EJB 方法调用以持久保存到 JBOSS 7.1 中的数据库中

java - 可以为可卸载的动态编译代码获得 native 性能吗?

javascript - 如何打印从 REST 返回的嵌套错误消息?

java - Swagger 2 如何仅从请求示例中排除属性

java - 如何编辑 EAR 文件中的 java 类文件

unit-testing - 在 JAX-RS 单元测试中连接到 @EJB 或 @PersistenceContext 注入(inject)