我将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在哪个地址运行的链接。
这是我的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);
}
}
答案 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)