gpt4 book ai didi

java - 将 REST API 部署到 AWS

转载 作者:行者123 更新时间:2023-11-30 10:30:36 24 4
gpt4 key购买 nike

我正在将一个分布式系统作为一个学校项目,我需要一个 REST 服务。这将是一个简单的服务,具有登录/注册功能和一些信息传输。

我在 NetBeans 中用 Java 制作了 REST API。它在本地运行良好,但我很难将它放在我的 AWS 服务器上。我没有使用服务器的经验,所以我真的不知道它是如何工作的。我认为在服务器上启动和运行该服务应该很容易。

到目前为止我已经使用了this REST 指南并尝试使用 Elastic Beanstalk 部署 war 文件。

我的 Java 代码:

应用配置.java

package dk.dtu.ds.login;

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

@javax.ws.rs.ApplicationPath("CoL")
public class ApplicationConfig extends Application {

@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> resources = new java.util.HashSet<>();
addRestResourceClasses(resources);
return resources;
}

/**
* Do not modify addRestResourceClasses() method.
* It is automatically populated with
* all resources defined in the project.
* If required, comment out calling this method in getClasses().
*/
private void addRestResourceClasses(Set<Class<?>> resources) {
resources.add(dk.dtu.ds.login.Login.class);
}
}

登录.java

package dk.dtu.ds.login;

import cleanoutloudserver.ICleanOutLoud;
import java.net.MalformedURLException;
import java.net.URL;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;

@Path("login")
public class Login {
// HTTP Get Method

@GET
@Path("dologin")
// Produces JSON as response
@Produces(MediaType.APPLICATION_JSON)
// Query parameters are parameters: http://localhost/colrest/CoL/login/dologin?username=s150157&password=1234
public String doLogin(@QueryParam("username") String uname, @QueryParam("password") String pwd) throws MalformedURLException, Exception {
URL url = new URL("http://ec2-52-43-233-138.us-west-2.compute.amazonaws.com:3769/col?wsdl");
QName qname = new QName("http://cleanoutloudserver/", "CleanOutLoudImplService");
Service service = Service.create(url, qname);
ICleanOutLoud col = service.getPort(ICleanOutLoud.class);

String token = col.login(uname, pwd);

token = Utility.constructJSON(token);
System.out.println("\nChecking credentials = true\n");
return token;
}
}

网络.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">
<display-name>RESTWebApp</display-name>
<servlet>
<servlet-name>jersey-servlet</servlet-name>
<servlet-class>
com.sun.jersey.spi.container.servlet.ServletContainer
</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>dk.dtu.ds.login</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>jersey-servlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>

然后当我尝试打开 path对于该服务,我得到一个空白页。我的 Chrome 控制台显示“GET(链接)404(未找到)”

由于我对 HTTP 和服务器不是很熟悉,所以我不知道该怎么做。没有一种简单的方法可以使用 AWS 部署简单的 REST 服务,还是我做错了什么?

我真的尝试过搜索谷歌寻求帮助,但到目前为止没有成功。

最佳答案

似乎我对那里的所有指南都感到困惑。我找到了一个简单的解决方案并在 EC2 实例上安装了 Tomcat,所以我什至不需要使用 Beanstalk。

我所做的就是关注 this引导并在 Web 应用程序管理器中上传 war 文件,现在它工作正常。

感谢他们在寻找解决方案的过程中提供的意见。

关于java - 将 REST API 部署到 AWS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43644285/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com