使用Payara数据源在Payara服务器下运行Spring Boot应用程序

步骤1:在Payara 5中添加Connector / J(JDBC MySQL Connector)

为了与MySQL通信,似鲭水狼牙鱼需要连接器/ J。下载并解压缩Connector / J的存档后,找到名为mysql-connector-java-5.1.47.jar的JAR文件  。应该在{PAYARA_HOME | / glassfish / lib文件夹中手动复制此文件,如下面的屏幕截图所示:

图片标题

第2步:从CLI 启动Payara domain1

打开控制台/终端,导航到{PAYARA_HOME} / bin文件夹,然后键入asadmin start-domain命令:

图片标题

命令成功执行后(这可能需要几秒钟),您应该看到消息:“ 命令start-domain已成功执行。”

但是,有一种可能性,而不是这个好消息获得NullPointerException,如下所示:

图片标题

最有可能的是,您获得此错误是因为您安装并默认为Payara不支持的Java(JDK)版本。我们必须通过设置AS_JAVA支持的JDK发行版来取悦Payara 。JDK 8是最安全的。在同一台机器上安装多个JDK没有任何错误或不寻常,所以不要担心这个方面。只是指示Payara使用兼容的。

要设置  AS_JAVA,请编辑文件{PAYARA_HOME} /glassfish/config/asenv.bat(在Windows计算机上)或{PAYARA_HOME} /glassfish/config/asenv.conf(在Linux计算机上)并添加到底部它是一行,set AS_JAVA=C:\Program Files\Java\jdk1.8.0_111(在Windows机器上)或AS_JAVA="/usr/lib/jvm/jdk1.8.0_111"(对于Linux机器):

图片标题

完成此编辑后,asadmin start-domain再次运行该命令。这一次,它应该按预期工作。

此外,打开您最喜欢的浏览器并导航到  localhost:4848。不久,您应该看到Payara Server Console,如下所示:

图片标题

步骤3:通过Payara界面创建新的JDBC连接池

在左侧面板中,找到JDBC | “JDBC连接池”节点,然后单击它。这将打开包含当前配置的连接池的JDBC连接池向导:

图片标题

在此向导中,单击“ 新建”按钮,然后开始为MySQL配置新的连接池。将池名称填充为MySqlPool(或任何其他名称),将资源类型填充为javax.sql.DataSource,将数据库驱动程序供应商填充为MySql

图片标题

完成后,只需单击右上角的“ 下一步”按钮。这将带您进入此配置过程的第二步。

在第二步中,我们有一个由几个部分组成的向导。第一部分名为  常规设置,它应包含已设置的正确设置。因此,向下滚动到第二部分,池设置

图片标题

我们将保留默认设置,但是,从这里,您可以轻松自定义连接池设置,例如最大池大小。 

再次向下滚动,您将找到“ 交易”部分。我们也不会修改此部分,但如果您希望事务在特定的隔离级别(例如,可重复读取)中执行,那么这是在其他配置旁边执行此操作的地方。

图片标题

在此向导下方,我们有Additional Properties表。此面板包含特定属性,具体取决于数据库供应商。在这种情况下,此表包含特定于MySQL的全面属性列表:

图片标题

您可以随意调整这些属性的值以满足您的需求。目前,我们处理以下属性:UserPasswordDatabaseNameServerNameURLurl CreateDatabaseIfNotExist

图片标题

所以,我们在连接本地主机到数据库命名的玩家,将如果不存在则自动创建。用户和密码的凭据是  rootroot (如果您愿意,请使用其他帐户凭据)。默认的MySQL端口是3306.找到并编辑其中的每个属性后,只需单击“  完成”按钮(位于右上角)。 

创建了新的连接池,现在,您应该在连接池列表中看到它,如下图所示:

图片标题

但是,我们怎么知道我们的连接池工作正常?好吧,Payara提供了一个很酷的  Ping设施。对于初学者,单击连接池名称并等待其加载。

图片标题

你应该看到一个Ping按钮。在单击此按钮之前,请确保MySQL正在运行符合您的设置。在这种情况下,它应该在localhost:3306上运行。单击此按钮后,您应收到Ping成功消息或错误消息,说明出现了什么问题。

图片标题

好的,到目前为止一切顺利!

第4步:通过Payara界面创建JDBC资源

现在,我们必须创建一个利用我们的连接池的JDBC资源。为此,在左侧面板中,单击JDBC | JDBC资源节点。不久,您应该看到可用JDBC资源的列表:

图片标题

单击“ 新建”按钮以启动用于创建JDBC资源的向导。对于标识JDBC资源的唯一JNDI名称,请键入  jdbc / players。对于池名称,从下拉列表中选择MySqlPool连接池。 

图片标题

最后,单击右上角的“ 确定”按钮。您应该看到列出的新JDBC资源如下:

图片标题

完成!现在,只需关闭Payara Server Console即可。此外,我们专注于Spring Boot应用程序。

第5步:获取Spring Boot Kickoff应用程序

为了开发将使用上述JDBC资源的应用程序,我们选择了一个基于Maven的Spring Boot启动应用程序,其中包含以下启动程序:  starter-data-jpa,  starter-jdbc,  starter-web,  starter-test

一种简单快捷的方法是使用Spring Initializr向导。

第6步:准备Payara的pom.xml

为了在Payara下部署我们的Spring Boot应用程序,我们需要调整pom.xml文件,如下所示:

- 通常,Spring Boot应用程序打包为JAR,但我们需要一个WAR,所以准备  <packaging>相应的:

< 包装>战争</ packaging >

- 默认情况下,在Tomcat上部署Spring Boot应用程序,因此我们需要排除Tomcat:

< 依赖>
    < groupId > org.springframework.boot </ groupId >
    < artifactId > spring-boot-starter-web </ artifactId >
    < exclusions >
        < 排除>
            < groupId > org.springframework.boot </ groupId >
            < artifactId > spring-boot-starter-tomcat </ artifactId >
        </ exclusion >
    </ exclusions >
</ dependency >

- 一旦我们删除了Tomcat,由于缺少Servlet API,我们无法编译代码,因此我们需要以明确的方式提供Servlet API依赖:

< 依赖>
    < groupId > javax.servlet </ groupId >
    < artifactId > javax.servlet-api </ artifactId >
    < scope >提供</ scope >
</ dependency >

- 这里提供完整的pom.xml 。

步骤7:通过JNDI,JDBC / Players配置数据源

请记住,我们已经创建了一个JDBC资源和一个连接池,它具有JNDI名称jdbc / players的入口点  。现在,我们指示我们的应用程序javax.sql.DataSource 通过此JNDI名称公开。为此,我们依赖Spring,JndiDataSourceLookupAPI如下:

@组态
公共 类 DataSourceConfigurer {
 
    private  static  final  String  JNDI  =  “jdbc / players” ;
 
    @Bean(destroyMethod  =  “”)//禁止将潜在的close()方法推断为驱逐舰
    public  DataSource  dataSource()抛出 DataSourceLookupFailureException {
        JndiDataSourceLookup  dataSourceLookup  =  new  JndiDataSourceLookup();
        return  dataSourceLookup。getDataSource(JNDI);
    }
}

此类的完整源代码可在此处获得。

第8步:创建模型

此外,我们创建了一个名为的简单JPA实体Player

@实体
@Table(name = “player”)
public  class  Player  实现 Serializable {
 
    private  static  final  long  serialVersionUID  =  1L ;
 
    @ID    
    私人 长 身份 ;
 
    私有 字符串 名称 ;
    私人 弦 城 ;
    私人 INT  年龄 ;
    ...
}

这个类的完整源代码在这里。

步骤9:定义典型的Spring存储库

接下来,我们定义一个典型的Spring存储库  Player

@Repository
public  interface  PlayerRepository  扩展 JpaRepository < Player,Long > {        
}

这个类的完整源代码在这里。

第10步:创建一个典型的Spring服务

此外,我们定义了一个典型的Spring服务,它将公开两种方法:一种用于持久化id为1的单个玩家的方法,另一种用于通过id查找此玩家的方法:

@服务
公共 类 PlayerService {
 
    private  final  PlayerRepository  playerRepository ;
 
    public  PlayerService(PlayerRepository  playerRepository){
        这个。playerRepository  =  playerRepository ;
    }
 
    public  Player  newPlayerWithIdOne(){
       ...
    }
 
    public  Player  findFirstPlayer(){
       ...
    }
}

这个类的完整源代码在这里。

步骤11:通过@RestController公开此服务

接下来,我们创建一个公共Spring控制器,公开两个端点,一个GET端点(/ fetch)和一个POST端点(/ new):

@RestController
public  class  PlayerController {
 
    私人 最终的 PlayerService  playerService ;
 
    public  PlayerController(PlayerService  playerService){
        这个。playerService  =  playerService ;
    }
 
    @GetMapping(“/ fetch”)
    public  Player  fetchPlayer(){
 
        返回 playerService。findFirstPlayer();
    }
 
    @PostMapping(“/ new”)
    public  Player  newPlayer(){
 
        返回 playerService。newPlayerWithIdOne();
    }
 
}

这个类的完整源代码在这里。

第12步:定义主类

我们的应用程序的主要类依赖于SpringBootServletInitializerAPI:

@SpringBootApplication
@EntityScan(“com.jpa.model”)   
@ComponentScan({ “com.http.requests”,“com.services” })
@EnableJpaRepositories(“com.jpa.queries”)
公共 类 SpringBootPayaraMySqlKickoffApplication  扩展 SpringBootServletInitializer {
 
    @覆盖
    protected  SpringApplicationBuilder  configure(SpringApplicationBuilder  应用程序){
        退货 申请。来源(SpringBootPayaraMySqlKickoffApplication。类);
    }
 
    public  static  void  main(String [] args){
        SpringApplication。运行(SpringBootPayaraMySqlKickoffApplication。类,ARGS);
    }
}

这个类的完整源代码在这里。

步骤13:从简单的HTML页面使用端点

您可以通过curl,ARC Rest Client,Postman等轻松测试端点(/ fetch/ new),但我们更喜欢基于普通AJAX的简单HTML页面:

< script >
    function  newPlayer(){
        var  xhttp  =  new  XMLHttpRequest();
        ...
    }
 
    function  fetchPlayer(){
        var  xhttp  =  new  XMLHttpRequest();
        ...
    }
...
< 按钮 类型= “按钮”  的onclick = “newPlayer()” > 插入 一个 单一的 播放器 与 ID  1 < /按钮>
< 按钮 类型= “按钮”  的onclick = “fetchPlayer()” > 获取 播放机 与 ID  1 < /按钮>

这个页面的完整源代码在这里。

步骤14:提供众所周知的Application.Properties

如您所知,Spring Boot依赖application.properties文件作为主配置文件。我们为这个文件提供了一些有用的Hibernate设置:

#创建架构,销毁以前的数据
小号p - [R 我Ñ 克。Ĵ p 一个。ħ 我b Ë ř Ñ 一吨ë 。d d 升- 一个Ù 吨Ô = C ^ - [R Ë 一吨ë
 
#显示已执行的SQL 
小号p - [R 我Ñ 克。Ĵ p 一个。小号ħ ö 瓦特- 小号q 升 = 吨- [R ù ë
 
#display statistics
小号p - [R 我Ñ 克。Ĵ p 一个。p - [R ø p é ř 吨我Ë 小号。ħ 我b Ë ř Ñ 一吨ë 。克Ë Ñ Ë ř 一吨ë _ 小号吨一吨我小号吨我Ç 小号 = 吨- [R ù ë

步骤15:添加web.xml和glassfish-web.xml描述符

为了以防万一,您将需要标准部署描述符(web.xml)。我们提供了一个空的:

<?xml  version =“1.0”encoding =“UTF-8”?>
< web-app  metadata-complete = “true”
         xmlns = “http://xmlns.jcp.org/xml/ns/javaee”
         xmlns:xsi = “http://www.w3.org/2001/XMLSchema-instance”
         xsi:schemaLocation = “http://xmlns.jcp.org/xml/ns/javaee
     http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd”
         version = “3.1” >
 
</ web-app >

此外,如果您需要Glassfish Descriptor(glassfish-web.xml),那么它(我们已经用它来自定义根上下文):

<?xml  version =“1.0”encoding =“UTF-8”?>
<!DOCTYPE glassfish-web-app PUBLIC ...>
   < glassfish-web-app  error-url = “” >
   ...
   <! - 设置友好的上下文根 - >
   < context-root > / players </ context-root >
 
   <! - 将默认字符编码从ISO-8859-1更改为UTF-8  - >
   < parameter-encoding  default-charset = “UTF-8” />
</ glassfish-web-app >

这个文件的完整源代码在这里。

步骤16:编译应用程序并找到WAR

好吧,是时候编译应用程序了。当然,我们可以通过不同的方式(例如,从我们最喜欢的IDE等)执行此操作,但是我们只需mvn clean install从项目文件夹中运行  命令:

图片标题

现在,您应该有一个包含应用程序WAR 的/ target文件夹。

步骤17:在Payara上部署WAR

只有一个重要步骤将我们与运行应用程序(部署步骤)区分开来。同样,我们可以从我们最喜欢的IDE部署应用程序(例如,从NetBeans很容易实现),或者通过Maven,但这次,我们可以通过Payara界面进行部署。

启动Payara Server Console并导航到Applications节点。单击Deploy按钮:

图片标题

此外,我们需要在Payara(部署)上传WAR文件。只需单击Choose File按钮,然后选择我们应用程序的WAR。此外,选择Web Application作为应用程序类型

图片标题

单击右上角的“ 确定”按钮,等待Payara完成部署。最后,您将自动重定向到包含已部署应用程序的表。

第18步:启动应用程序

在此表中,找到我们的应用程序并单击“ 启动”按钮:

图片标题

此时,您将看到两个可用链接,一个在端口8080(http)上,另一个在端口8181(https)上。点击8080链接:

图片标题

该应用程序应该启动,如下所示:

图片标题

现在,我们可以尝试持久并获取ID为1的播放器。例如,您可以尝试以下三个步骤的顺序:

图片标题

完成!要停止Payara,只需在命令行运行:asadmin stop-domain

猜你喜欢

转载自blog.csdn.net/Tybyqi/article/details/85787462