我正在尝试使用java创建我的第一个RESTFull web服务应用程序。我安装了postgres,netbeans 14,jdk-18.0.2和tomcat 10。我已经从数据库创建了一个maven java web应用程序和一些RESTfull web服务(从数据库中选择新的-> RestFull web服务)。
Netbeans为我创建了以下几个类:
@Stateless
@Path("task")
public class TaskFacadeREST extends AbstractFacade<Task> {
@PersistenceContext(unitName = "com.mycorp_testproject_war_1.0-SNAPSHOTPU")
private EntityManager em;
public TaskFacadeREST() {
super(Task.class);
}
@POST
@Override
@Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public void create(Task entity) {
super.create(entity);
}
Entity
@Table(name = "TASK")
@NamedQueries({
@NamedQuery(name = "Task.findAll", query = "SELECT t FROM Task t"),
@NamedQuery(name = "Task.findById", query = "SELECT t FROM Task t WHERE t.id = :id"),
@NamedQuery(name = "Task.findByProjectId", query = "SELECT t FROM Task t WHERE t.projectId = :projectId"),
@NamedQuery(name = "Task.findByTypeId", query = "SELECT t FROM Task t WHERE t.typeId = :typeId")})
public class Task implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "ID")
private Long id;和应用程序控制类:
@javax.ws.rs.ApplicationPath("webresources")
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(com.mycorp.testproject.service.LinkTypeFacadeREST.class);
resources.add(com.mycorp.testproject.service.ProjectFacadeREST.class);
resources.add(com.mycorp.testproject.service.TaskFacadeREST.class);
resources.add(com.mycorp.testproject.service.TaskLinkFacadeREST.class);
resources.add(com.mycorp.testproject.service.TaskTypeFacadeREST.class);
}
}然后,在我设法修复的项目路径、依赖关系、构建过程、pom.xml和插件版本中出现了一些错误。现在我的项目可以成功部署,并显示“你好世界”索引页面。但是rest服务端点仍然返回404错误。
我自己想做的事:
project)
<servlet>
<display-name>Task RESTfull web service</display-name>
<servlet-name>TaskService</servlet-name>
<servlet-class>com.mycorp.testproject.service.TaskFacadeREST</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.mycorp.testproject.service.ApplicationConfig</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>TaskService</servlet-name>
<url-pattern>/webresources/task</url-pattern>
</servlet-mapping>第一个选项没有帮助,第二个返回的错误是TaskFacadeREST类不是servlet类。
现在我完全被困住了,找不到任何关于将JAX端点部署到Tomcat的教程,也不知道该走哪条路。感谢任何信息,文档或教程链接,下一步做什么,因为netbeans教程是基于玻璃鱼,不包含任何有关此类问题的信息。
发布于 2022-08-17 07:39:28
Tomcat 10实现了从Jakarta 9开始的API。您似乎在使用JavaEE8API。javax 8和Jakarta 9之间有一个重大的包更改(javax.* -> jakarta.*)。
在Tomcat 9上部署,而不是在Tomcat 10上部署,应该会有所改进。
https://stackoverflow.com/questions/73354145
复制相似问题