我在网上学习了REST API | Web服务教程,中途被卡住了。当我运行它成功安装的服务器时,显示它在http://localhost:8080/同样如此,但只要我尝试访问不同的servlet,页面就会重新加载并返回404 Error Not found。我试着下载早期版本的wildfly,但没有用。我尝试的路径是/demorest、/webapi、/myresources,它们也被结合使用。有什么问题吗?
package com.david.demorest;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType;
@Path("myresource")
public class MyResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String getIt() {
return "Got it!";
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!-- This web.xml file is not required when using Servlet 3.0 container,
see implementation details http://jersey.java.net/nonav/documentation/latest/jax-rs.html -->
<web-app version="2.5" 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_2_5.xsd">
<servlet>
<servlet-name>Jersey Web Application</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.david.demorest</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey Web Application</servlet-name>
<url-pattern>/webapi/*</url-pattern>
</servlet-mapping>
</web-app>
<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>com.david</groupId>
<artifactId>demorest</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>demorest</name>
<build>
<finalName>demorest</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<inherited>true</inherited>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.glassfish.jersey</groupId>
<artifactId>jersey-bom</artifactId>
<version>${jersey.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet-core</artifactId>
<!-- use the following artifactId if you don't need servlet 2.x compatibility -->
<!-- artifactId>jersey-container-servlet</artifactId -->
</dependency>
<dependency>
<groupId>org.glassfish.jersey.inject</groupId>
<artifactId>jersey-hk2</artifactId>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-binding</artifactId>
</dependency>
</dependencies>
<properties>
<jersey.version>3.0.4</jersey.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>
本教程很可能是为了部署到Tomcat而编写的。Wildfly内置了JAXR所需的一切。
要开始,你需要三个文件。首先,需要一个扩展javax的类。ws。rs.core。应用程序
。它可以是您想要的任何包装:
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
@ApplicationPath("/rest")
public class RestApplicationConfig extends Application {
// intentionally empty
}
接下来,你需要你的服务。虽然我的路径
以一个正斜杠开头,比如@Path(“/myresource”)
,但您显示的路径应该可以工作。最后,你需要一个pom。生成
war
文件的xml。我没有测试过你的,但我有一个看起来像:
<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>jaxrs-simple-sample</artifactId>
<groupId>com.hotjoe.jaxrs</groupId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<failOnMissingWebXml>false</failOnMissingWebXml>
</properties>
<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>8.0.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.3.2</version>
</plugin>
</plugins>
</build>
</project>
我刚刚证实了这一点。一旦你拥有了所有这些,你就可以生成一个war文件,可以放入
$WILDFLY_HOME/standalone/deployments
中,然后WILDFLY将运行它。但你需要注意网址。如我的pom中所定义。xml
这将创建一个名为jaxrs-simple-sample-1.0-SNAPSHOT的war文件。war
,此文件名将成为URL的一部分。在这个例子中,你的服务的URL应该是http://localhost:8080/jaxrs-simple-sample-1.0-SNAPSHOT/rest/myresource
。其中的rest
部分来自定义的@ApplicationPath
。但另一部分来自战争的名称。如果您不喜欢,可以再添加一个特定于Wildfly的文件:
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
<context-root>myapp</context-root>
</jboss-web>
在标准Maven环境中,该文件将命名为
JBossWeb。xml
并将被放置在src/main/webapp/WEB-INF
中。这会将上述URL更改为http://localhost:8080/myapp/rest/myresource
。
在我的应用程序(,出现了一个向上箭头,表示,但我无法处理它来执行任何操作,甚至无法显示toast。我尝试了这个方法,并在选项ItemSelected()中处理了开关(item.getItemId()),但这两种解决方案都不适合我。我错过了一些东西,但不知道是什么。 这是我的代码: ... 我的整个选项项已选定: 我不知道其他代码是否重要: 在我的清单中,我没有父母活动。 我找到了这个答案,它似乎是
我将首先说,我已经查看并尝试了我能找到的每个问题的解决方案。最大的问题是,这些解决方案中的大多数都非常古老,Spring Boot在过去几年中发生了很大变化。明确地说,我已经尝试了这个、这个、这个、这个等等。我还阅读了许多教程。没有任何效果。 我有一个全新的Spring Boot应用程序,我正在尝试让JSP渲染与之一起工作。这些是我的依赖项: 我的项目安排如下: “WEB-APP/jsp”只是我尝
我的laravel项目在本地运行,但当我部署服务器时,项目给出错误。 SQLState[42883]:未定义函数:7错误:运算符不存在:boolean=整数行1:...来自“bo_user”,其中“email”=$1,“isactived”=$2限制...^提示:没有与给定名称和参数类型匹配的运算符。您可能需要添加显式类型转换。(SQL:select*from“bo_user”,其中“email”
我刚刚安装了一台新的计算机--全新的Java1.8安装,全新的3.5.2 Maven配置,现在我正在创建一个全新的quickstart Maven项目。 当我添加父Spring Boot启动程序和单个依赖项时,无论我做什么,它都无法解析它。
当涉及到java打包的细节时,我是一个完全的新手。 我已经通过jdk-15编写了一个使用Java-15的TCP数据服务器,它在VSCODE下运行时工作得相当愉快。 生成mrs_server-1.0.exe。然后创建文件夹C:\Program files\MRS_Server,其中包括mrs_server\app文件夹中我的代码的副本,一个mrs_server\runtime文件夹,我假定它包含运行
我刚刚开始在我的应用程序中使用AWS Cognito,我按照说明安装了放大器,创建了用户池和身份池,并设置了一切。我创建了一个注册表单和图章,没有问题的和确认的电子邮件。 但是,当我尝试登录时,我输入了我的凭据,并得到了NotAuthorizedException、不正确的用户名或密码。 我是这样登录的: 无论在输入字段中输入什么,都会出现此错误。我刚开始使用AmazonAWS,真的想不出有什么问