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

时间:2017-09-07 17:21:06

标签: java rest ejb wildfly

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

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

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

  

9:08:33,715 INFO [org.jboss.ws.common.management](MSC服务主题)   1-6)JBWS022052:启动JBossWS 5.1.9.Final(Apache CXF 3.1.12)   19:08:34,012 INFO [org.jboss.as.jpa](MSC服务主题1-7)   WFLYJPA0002:读取主要19:08:34,430 INFO的persistence.xml   [org.jboss.as.connector.deployers.jdbc](MSC服务主题1-6)   WFLYJCA0005:部署不符合JDBC的驱动程序类   com.mysql.jdbc.Driver(版本5.1)19:08:34,445信息   [org.jboss.as.connector.deployers.jdbc](MSC服务主题1-6)   WFLYJCA0005:部署不符合JDBC的驱动程序类   com.mysql.fabric.jdbc.FabricMySQLDriver(版本5.1)19:08:34,445   INFO [org.jboss.as.connector.deployers.jdbc](MSC服务主题1-3)   WFLYJCA0018:使用driver-name =启动驱动程序服务   MySQL的连接器的Java-44年5月1日 - bin.jar_com.mysql.jdbc.Driver_5_1   19:08:34,445 INFO [org.jboss.as.connector.deployers.jdbc](MSC   服务主题1-5)WFLYJCA0018:启动驱动程序服务   driver-name =   MySQL的连接器的Java-44年5月1日 - bin.jar_com.mysql.fabric.jdbc.FabricMySQLDriver_5_1   19:08:34,445 INFO [org.jboss.weld.deployer](MSC服务主题1-8)   WFLYWELD0003:处理焊接部署MovieWebService.jar   19:08:34,508 INFO [org.jboss.as.connector.subsystems.datasources]   (MSC服务主题1-4)WFLYJCA0001:绑定数据源   [java:/ MySqlDS] 19:08:34,523 INFO [org.jboss.as.jpa](ServerService   线程池 - 62)WFLYJPA0010:启动持久性单元(第1阶段)   2)服务' MovieWebService.jar#primary' 19:08:34,539 INFO   [org.hibernate.jpa.internal.util.LogHelper](ServerService线程池    - 62)HHH000204:处理PersistenceUnitInfo [name:primary ...] 19:08:34,539 INFO   [org.hibernate.validator.internal.util.Version](MSC服务线程   1-8)HV000001:Hibernate Validator 5.3.5.Final 19:08:34,601 INFO   [org.infinispan.factories.GlobalComponentRegistry](MSC服务主题   1-7)ISPN000128:Infinispan版本:Infinispan' Chakra' 8.2.8.Final   19:08:34,633 INFO [org.jboss.as.ejb3.deployment](MSC服务主题)   1-8)WFLYEJB0473:名为的会话bean的JNDI绑定   ' ArticleResourceEJB'在部署单元部署中   " MovieWebService.jar"'如下:

     

Java的:全球/ MovieWebService / ArticleResourceEJB com.dev.ejbwebservice.ArticleResourceEJB   的 > Java的:应用程序/ MovieWebService / ArticleResourceEJB com.dev.ejbwebservice.ArticleResourceEJB     Java的:模块/ ArticleResourceEJB com.dev.ejbwebservice.ArticleResourceEJB     Java的:全球/ MovieWebService / ArticleResourceEJB     Java的:应用程序/ MovieWebService / ArticleResourceEJB     的java:模块/ ArticleResourceEJB

     

19:08:34,633 INFO [org.hibernate.Version](ServerService线程池    - 62)HHH000412:Hibernate Core {5.1.10.Final} 19:08:34,633 INFO [org.hibernate.cfg.Environment](ServerService线程池 - 62)   HHH000206:未找到hibernate.properties 19:08:34,633 INFO   [org.hibernate.cfg.Environment](ServerService线程池 - 62)   HHH000021:字节码提供者名称:javassist 19:08:34,680 INFO   [org.hibernate.annotations.common.Version](ServerService线程池    - 62)HCANN000001:Hibernate Commons Annotations {5.0.1.Final} 19:08:34,789 INFO [org.jboss.weld.Version](MSC服务线程1-2)   WELD-000900:2.4.3(最终)19:08:34,930 INFO   [org.jboss.as.clustering.infinispan](ServerService线程池 - 63)   WFLYCLINF0002:从ejb容器启动客户端映射缓存   19:08:34,945 INFO [org.jboss.as.jpa](ServerService线程池 -   62)WFLYJPA0010:启动持久性单元(第2阶段,共2阶段)服务   '#MovieWebService.jar初级' 19:08:35,101错误[stderr]   (ServerService Thread Pool - 62)Thu Sep 07 19:08:35 CEST 2017 WARN:   在没有服务器身份验证的情况下建立SSL连接   不建议。根据MySQL 5.5.45 +,5.6.26 +和5.7.6+   要求如果显式,则必须默认建立SSL连接   选项未设置。符合不使用的现有应用程序   SSL将verifyServerCertificate属性设置为' false'。你需要   通过设置useSSL = false或设置来显式禁用SSL   useSSL = true并为服务器证书提供信任库   验证

     

19:08:35,196警告   [org.jboss.jca.core.connectionmanager.pool.strategy.OnePool]   (ServerService线程池 - 62)IJ000407:没有懒惰的登记   可用于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);
    }
}

2 个答案:

答案 0 :(得分:2)

好像你的上下文名称错了。我认为你部署的工件的名称(你的应用程序的名称)是'MovieWebService',因此url应该类似于localhost:8080 / MovieWebService / pathToYourService / pathToMethod

不确定它是否必须是jdbc:oracle:thin:@oracle_container:1521/xe ,我通常会将可展开工件.jar.war部署到Wildfly。

答案 1 :(得分:0)

您的示例日志来自Web服务,因此不适用于休息服务。从wildfly快速入门开始。不知道你是否拥有它,但是jax-rs需要扩展javax.ws.rs.core.Application

/**
 * JAXActivator is an arbitrary name, what is important is that javax.ws.rs.core.Application is extended
 * and the @ApplicationPath annotation is used with a "rest" path.  Without this the rest routes linked to
 * from index.html would not be found.
 */

@ApplicationPath("rest")
public class JAXActivator extends Application {
    // Left empty intentionally
}

参考:helloworld-rs: Helloworld Using JAX-RS (Java API for RESTful Web Services)