JavaEE Websphere Liberty 没有根资源匹配请求且没有有效的 jdbcDriver

标签 java maven jdbc jax-rs websphere-liberty

我需要你的帮助...这让我抓狂,我尝试将一个非常简单的应用程序部署到 websphere liberty 16.0.0.2 服务器上。我的第一个大问题是,其余的 api 无法调用。收到错误:没有找到与请求路径/admin-web-1.0-SNAPSHOT/api/account匹配的根资源,相对路径:/api/account。

代码: 应用程序REST

import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
import java.util.HashSet;
import java.util.Set;

@ApplicationPath("api")
     public class AppREST extends Application {

     public Set<Class<?>> getClasses() {
         Set<Class<?>> resources = new HashSet<Class<?>>();
         resources.add(AccountREST.class);
         resources.add(GroupREST.class);
         return resources;
     }
}

帐户REST

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.inject.Inject;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import java.util.List;

@ManagedBean
@RequestScoped
@Path("/account")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class AccountREST {

@Inject
private AccountFacade accountFacade;

@POST
public void createAccount(AccountRequest accountRequest){

}

@GET
public List<AccountRequest> getAccountRequests() {
    return accountFacade.getAccountRequests();
}

GroupREST 与 AccountREST 几乎相同。 web.xml 是:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
     version="3.0">
<module-name>admin-web</module-name>
<display-name>Eportal Registration Admin</display-name>

</web-app>

POM 文件包含以下依赖项:

<dependencies>
    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-api</artifactId>
        <version>7.0</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>eportal.registration.admin</groupId>
        <artifactId>admin-models</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>eportal.registration.admin</groupId>
        <artifactId>admin-usecases</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>eportal.registration.admin</groupId>
        <artifactId>admin-models</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>eportal.registration.admin</groupId>
        <artifactId>admin-repositories</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
</dependencies>

我真的看不到我几乎从工作项目中复制过去的错误:(

现在第二个问题是 JDBC 驱动器。我从mavencentral下载了mysql-connector-java-6.0.3.jar。并将其添加到 server.xml 中:

<?xml version="1.0" encoding="UTF-8"?>
<server description="new server">

<!-- Enable features -->
<featureManager>
    <feature>javaee-7.0</feature>
</featureManager>
<httpEndpoint id="defaultHttpEndpoint"
              httpPort="9080" />

<applicationManager autoExpand="true"/>

<dataSource id="RegistrationAdminDB" jndiName="jdbc/RegistrationAdminDB">
    <jdbcDriver libraryRef="MySQLLib"/>
    <properties databaseName="REGISTRATIONADMINDB" serverName="localhost" portNumber="3306"/>
</dataSource>

<library id="MySQLLib">
    <fileset dir="/opt/ibm/wlp/clients/mysql-connector-java-6.0.3.jar"/>
</library>
</server>

获取错误

java.lang.RuntimeException: java.sql.SQLNonTransientException: DSRA4000E: A valid JDBC driver implementation class was not found for the jdbcDriver dataSource[RegistrationAdminDB]/jdbcDriver[default-0] using the library MySQLLib. []
at com.ibm.ws.resource.internal.ResourceFactoryTrackerData$1.getService(ResourceFactoryTrackerData.java:113)

启动时。

好吧,我找不到错误,但不幸的是没有任何作用:( 感谢您的帮助!

最佳答案

对于您的第一个问题,如果您将 war 文件复制到 dropins 文件夹,liberty 是否成功部署应用程序?如果部署成功,它通常会提供您的应用程序启动时使用的 URL/端口和上下文根。

对于第二个问题,您是否尝试过按照此处的步骤操作? Configuring MySQL Driver in Liberty

  1. 将 MySQL JDBC 驱动程序 JAR 文件添加到 $LIBERTY_HOME/wlp/usr/shared/resources/mysql。如果该目录不存在,请创建它。

  2. 在 $LIBERTY_HOME/usr/servers/worklightServer/server.xml 文件中配置数据源(在此路径中,worklightServer 可以替换为您的服务器名称),如下所示:

<library id="MySQLLib"> <fileset dir="${shared.resource.dir}/mysql" includes="*.jar"/> </library>

关于JavaEE Websphere Liberty 没有根资源匹配请求且没有有效的 jdbcDriver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38707425/

相关文章:

java - 如何使用 AsynchronousFileChannel 异步强制文件

maven - 将元组发送到ElasticSearch时,为什么 Storm 拓扑没有响应

maven - com.mysql.cj.jdbc.Driver、MySQL Connector 和 IntelliJ IDEA 出现 ClassNotFoundException

单事务中的 Spring 集成和 JDBC

java - java中的静态方法加载/卸载和内存区域?

java - Android 外设 BluetoothGattServerCallback onServiceAdded() 没有被调用

android - 在 View 级别抑制 lint 警告

postgresql - 为什么连续读取的计数结果不同?

java - EventQueue.invokeLater 与 Thread.start

tomcat - Artifactory 和 tomcat 内存不足