<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>restexample</groupId>
<artifactId>restexample</artifactId>
<packaging>war</packaging>
<version>1.0</version>
<name>restexample</name>
<repositories>
<repository>
<id>eap</id>
<url>http://maven.repository.redhat.com/techpreview/all</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>eap</id>
<url>http://maven.repository.redhat.com/techpreview/all</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.6</maven.compiler.source>
<maven.compiler.target>1.6</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.jboss.spec</groupId>
<artifactId>jboss-javaee-6.0</artifactId>
<version>3.0.2.Final-redhat-4</version>
<type>pom</type>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>2.9.1</version>
</dependency>
</dependencies>
</project>
酷,相当的详细,但是我希望你们能够理解里面的代码,在这篇博文中我假设读者都已经了解Java,因此我不准备解释里面的细节了。
[b]第二步:创建beans.xml文件并且设置我们的servlet映射[/b]
作为范例的一部分,我们将会对我们的数据库访问类使用CDI(上下文依赖注入)。根据官方的CDI配置说明,一个应用要使用CDI的话就要在该应用的 WEB-INF 目录里面包含一个beans.xml文件。因此我们就来创建这个文件并且按照我们所需的信息来配置它。进入到你的 /src/main/webapp/WEB-INF 目录然后创建一个 beans.xml文件,加入下面的代码:
<?xml version="1.0"?> <beans 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://jboss.org/schema/cdi/beans_1_0.xsd"/>
<servlet-mapping> <servlet-name>javax.ws.rs.core.Application</servlet-name> <url-pattern>/ws/*</url-pattern> </servlet-mapping>
package com.strongloop.data;
import java.net.UnknownHostException;
import javax.annotation.PostConstruct;
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Named;
import com.mongodb.DB;
import com.mongodb.Mongo;
@Named
@ApplicationScoped
public class DBConnection {
private DB mongoDB;
public DBConnection() {
super();
}
@PostConstruct
public void afterCreate() {
String mongoHost = "127.0.0.1"
String mongoPort = "27001"
String mongoUser = "strongloop;
String mongoPassword = "rocks";
String mongoDBName = "restexample";
int port = Integer.decode(mongoPort);
Mongo mongo = null;
try {
mongo = new Mongo(mongoHost, port);
} catch (UnknownHostException e) {
System.out.println("Couldn't connect to MongoDB: " + e.getMessage()
+ " :: " + e.getClass());
}
mongoDB = mongo.getDB(mongoDBName);
if (mongoDB.authenticate(mongoUser, mongoPassword.toCharArray()) == false) {
System.out.println("Failed to authenticate DB ");
}
}
public DB getDB() {
return mongoDB;
}
}
$ mongoimport --jsonArray -d yourDBName -c beers --type json --file /tmp/beers.json -h yourMongoHost --port yourMongoPort -u yourMongoUsername -p yourMongoPassword
connected to: 127.0.0.1:27017 Tue Jun 10 20:09:55.436 check 9 24 Tue Jun 10 20:09:55.437 imported 24 objects
package com.strongloop.data;
public class Beer {
private String id;
private String name;
private String description;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
package com.strongloop.webservice;
import java.util.ArrayList;
import java.util.List;
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import com.strongloop.data.DBConnection;
import com.strongloop.data.Beer;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
@RequestScoped
@Path("/beers")
public class BeerWS {
@Inject
private DBConnection dbConnection;
private DBCollection getBeerCollection() {
DB db = dbConnection.getDB();
DBCollection beerCollection = db.getCollection("beers");
return beerCollection;
}
private Beer populateBeerInformation(DBObject dataValue) {
Beer theBeer = new Beer();
theBeer.setName(dataValue.get("name"));
theBeer.setDescription(dataValue.get("name"));
theBeer.setId(dataValue.get("_id").toString());
return theBeer;
}
// 获取所有啤酒
@GET()
@Produces("application/json")
public List<Beer> getAllBeers() {
ArrayList<Beer> allBeersList = new ArrayList<Beer>();
DBCollection beers = this.getBeerCollection();
DBCursor cursor = beers.find();
try {
while (cursor.hasNext()) {
allBeersList.add(this.populateBeerInformation(cursor.next()));
}
} finally {
cursor.close();
}
return allBeersList;
}
}
$ npm install -g strongloop
$ slc loopback
$ cd restexample
$ slc loopback:datasource
[?] Enter the data-source name: myMongo
[?] Select the connector for myMongo: PostgreSQL (supported by StrongLoop) Oracle (supported by StrongLoop) Microsoft SQL (supported by StrongLoop) MongoDB (supported by StrongLoop) SOAP webservices (supported by StrongLoop) REST services (supported by StrongLoop) Neo4j (provided by community) (Move up and down to reveal more choices)
{
"db": {
"name": "db",
"connector": "memory"
},
"myMongo": {
"name": "myMongo",
"connector": "mongodb"
"url": "mongodb://localhost:27017/restexample"
}
}
$ mongoimport --jsonArray -d yourDBName -c beers --type json --file /tmp/beers.json -h yourMongoHost --port
connected to: 127.6.189.2:27017 Tue Jun 10 20:09:55.436 check 9 24 Tue Jun 10 20:09:55.437 imported 24 objects
$ slc loopback:model
[?] Enter the model name: beer [?] Select the data-source to attach beer to: db (memory) myMongo (mongodb)
[?] Expose beer via the REST API? Yes
[?] Custom plural form (used to build REST URL):
Enter an empty property name when done. [?] Property name: name
Enter. [?] Property type: (Use arrow keys) string number boolean object array date buffer geopoint (other)
Enter. Let's add another beer property. Enter an empty property name when done. [?] Property name: description invoke loopback:property [?] Property type: string [?] Required? Yes
{
"name": "beer",
"base": "PersistedModel",
"properties": {
"name": {
"type": "string",
"required": true
},
"description": {
"type": "string",
"required": true
}
},
"validations": [],
"relations": {},
"acls": [],
"methods": []
}
"beer": {
"dataSource": "myMongo",
"public": true
}
$ slc run
| Feature | Java EE | Node.js |
| 完善的IDE支持 | Yes, 多种IDE供选择,包括 Eclipse, Sublime and Idea | Yes, 多种IDE供选择, Visual Studio, Eclipse, Sublime |
| 依赖管理 | Maven | NPM |
| 有企业级项目采用 | Yes | Yes |
| 庞大的组件生态系统 | Yes | Yes |
| 需要 JVM | Yes | No |
| 通用开发框架 | Spring, JEE | Express |
| 数据库支持 | Yes | Yes |
| ORM 框架 | Yes | Yes |
| 测试框架 | Yes | Yes |
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有