payara 创建 集群
想知道如何开始使用Java EE Microservices? 使用Java EE API部署微服务只需要几个快速步骤。 许多人认为Java EE对于与微服务一起使用而言过于繁重,但事实并非如此……尤其是如果您仅利用服务所需的Java EE规范。 在这篇简短的文章中,我将演示如何使用Java EE快速开发微服务,然后将其部署到Payara Micro。
要下载示例项目,请转到GitHub: https : //github.com/juneau001/SimpleService
就本示例而言,我将使用NetBeans,但是任何Java IDE都足够。 首先,创建一个Maven Web应用程序并将其命名为SimpleService。 接下来,创建两个Java包:org.simpleservice和org.simpleservice.entity。 完成后,该项目应类似于下图:
现在,许多人认为微服务不应该连接到企业数据库,但是我将其留给那些有争议的人使用。 在此示例中,我将把该服务连接到中央Apache derby数据库以获取数据,因为我认为这在许多组织中都是非常可能的情况。 在这种情况下,我们将创建一个“建议的名称”数据库Web服务,该服务将查询即将到来的EE4J平台的建议名称的数据库表。 要创建基础结构,请连接到本地Apache Derby数据库并使用以下SQL创建它:
create table SUGGESTED_NAME (
id numeric primary key,
name varchar(150));
insert into suggested_name values(1, 'Open EE');
insert into suggested_name values(2, 'Open JOE');
insert into suggested_name values(3, 'Cappucino');
接下来,打开SimpleService项目的Maven POM文件并添加以下依赖项:
<dependencies>
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>javax.persistence-api</artifactId>
<version>2.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.0.Final</version>
</dependency>
<dependency>
<groupId>javax.ejb</groupId>
<artifactId>javax.ejb-api</artifactId>
<version>3.2</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>eclipselink</artifactId>
<version>2.5.2</version>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>org.eclipse.persistence.jpa.modelgen.processor</artifactId>
<version>2.5.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derbyclient</artifactId>
<version>10.14.1.0</version>
</dependency>
</dependencies>
请注意,没有Java EE依赖性。 这是因为我仅利用了服务所需的那些依赖项。 每个依赖项是单独添加的。
接下来,创建一个包org.simpleservice.entity,并在其中创建一个名为SuggestedName的实体类。 为简便起见,我不会在这里介绍所有源代码,但是您可以在GitHub( https://github.com/juneau001/SimpleService )上查看源代码。
接下来,我们需要实现我们的JAX-RS Web服务类。 要为JAX-RS配置Java EE应用程序,让我们创建一个名为ApplicationConfig的类并将其放在org.simpleservice包中:
import java.util.Set;
import javax.ws.rs.core.Application;
/**
*
* @author Juneau
*/
@javax.ws.rs.ApplicationPath("rest")
public class ApplicationConfig extends Application {
@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> resources = new java.util.HashSet<>();
resources.add(org.simpleservice.SuggestedNameService.class);
return resources;
}
}
接下来,我将自己创建JAX-RS Web服务类,并将其命名为SuggestedNameService。 这是SuggestedNameService类的源。 请注意,我已经注入了一个持久性单元。 我接下来会讲。
@Stateless
@Path("suggestedNameService")
public class SuggestedNameService {
@PersistenceContext(unitName = "SimpleService_1.0PU")
private EntityManager em;
@GET
@Path("{id}")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public SuggestedName find(@PathParam("id") BigDecimal id) {
SuggestedName suggestedName = null;
try {
suggestedName = (SuggestedName)
em.createQuery("select object(o) from SuggesetedName o " +
"where o.id = :id")
.setParameter("id", id)
.getSingleResult();
} catch (NoResultException ex){
System.out.println("Error: " + ex);
}
return suggestedName;
}
@GET
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public List<SuggestedName> findAll() {
List<SuggestedName> suggestedNames = null;
try {
suggestedNames = em.createQuery("select object(o) from SuggestedName o")
.getResultList();
} catch (NoResultException ex){
System.out.println("Error: " + ex);
}
return suggestedNames;
}
protected EntityManager getEntityManager() {
return em;
}
}
由于此服务将连接到数据库,因此我将为项目创建一个持久性单元。 右键单击项目,然后选择“新建”->“持久性”->“持久性单元”,可以在NetBeans中轻松完成此操作。 将持久性单元命名为SimpleService_1.0PU并使用EclipseLink作为提供者。 此时不要添加数据源。
创建完成后,打开持久性单元并添加连接信息。 在这种情况下,我将连接到接下来将定义的JTA数据源。 数据源名为DerbyDataSource,因此持久性单元(persistence.xml)的内容应如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="AuthorService_1.0PU" transaction-type="JTA">
<jta-data-source>java:global/DerbyDataSource</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties/>
</persistence-unit>
</persistence>
为项目创建一个web.xml部署描述符。 如果在NetBeans中执行此操作,只需右键单击该项目并选择New-> Web->” Standard Deployment Descriptor(web.xml),然后单击Finish。 生成web.xml部署描述符后,将数据源添加到其中。
<web-app 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">
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<data-source>
<name>java:global/DerbyDataSource</name>
<class-name>org.apache.derby.jdbc.ClientDriver</class-name>
<server-name>localhost</server-name>
<port-number>1527</port-number>
<url>jdbc:derby://localhost:1527/acme</url>
<user>acmeuser</user>
<password>yourpassword</password>
</data-source>
</web-app>
Java EE应用程序就是这样。 现在,您应该能够将项目编译为WAR文件,并部署到GlassFish,Payara或您选择的其他Java EE应用程序服务器。 在这种情况下,让我们部署到Payara Micro。
首先,请从以下网站下载最新的Payara Micro JAR文件:https://www.payara.fish/payara_micro
下载完成后,可以通过打开命令提示符并在本地Java运行时执行JAR来启动服务器,方法是键入:
java -jar payara-micro-4.1.2.174.jar
要部署我们创建的应用程序(微服务),只需在执行Payara Micro JAR时使用–deploy选项,并将其指向SimpleService WAR文件:
java -jar payara-micro-4.1.2.174.jar --deploy SimpleService-1.0.war
现在可以通过以下URL访问SimpleService微服务:http:// localhost:8080 / SimpleService-1.0 / rest / suggestedNameService
翻译自: https://www.javacodegeeks.com/2017/11/easy-java-ee-microservices-payara-micro.html
payara 创建 集群