홈>
이 예 (저지 + 부두용 Google에서 처음으로 조회)이지만 운이 적습니다.
아래의 주석가들의 제안에 따라, 최신 버전의 Jetty (9.1.0.RC2)와 Jersey (2.7)를 사용하도록 예제를 업데이트하기로 결정했습니다.
업데이트 된 종속성이있는 업데이트 된 pom은 다음과 같습니다.
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>HelloJerseyLatest</groupId>
<artifactId>HelloJerseyLatest</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet-core</artifactId>
<version>2.7</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<version>9.1.0.RC2</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-servlet</artifactId>
<version>9.1.0.RC2</version>
</dependency>
</dependencies>
</project>
첫 번째로 알아야 할 것은 Jersey 패키지가
com.sun.jersey.spi.*
에서 변경되었다는 것입니다.
org.glassfish.jersey.*
로
.
결과적으로 주요 방법도 변경해야합니다.
package example.server;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
//import com.sun.jersey.spi.container.servlet.ServletContainer;
import org.glassfish.jersey.servlet.ServletContainer;
public class MinimalServerRest {
public static void main(String[] args) throws Exception {
ServletHolder sh = new ServletHolder(ServletContainer.class);
// these initialization strings will need to be updated.
sh.setInitParameter("com.sun.jersey.config.property.resourceConfigClass", "com.sun.jersey.api.core.PackagesResourceConfig");
sh.setInitParameter("com.sun.jersey.config.property.packages", "rest");//Set the package where the services reside
sh.setInitParameter("com.sun.jersey.api.json.POJOMappingFeature", "true");
Server server = new Server(9999);
ServletContextHandler context = new ServletContextHandler(server, "/", ServletContextHandler.SESSIONS);
context.addServlet(sh, "/*");
server.start();
server.join();
}
}
원본 샘플 코드를 최신으로 업데이트하려면 어떤 변경이 필요합니까? web.xml 파일이 없습니다. 내가 필요한가요?
- 답변 # 1
관련 자료
- 20.04 : 일부 응용 프로그램의 최신 업데이트 후 시스템 트레이가 감지되지 않음
- printing - Ubuntu 2004의 Cups 및 cups-filter를 Ubuntu 2010의 일부인 최신 버전으로 업그레이드하여 여러 복사본 버그를 수정하는 방법은 무엇입니까?
- azure devops 릴리스 파이프 라인 업데이트 - 'deploy plataform 3 : 1 *'버전의 작업은 배포 작업 '에이전트에서 실행'에 유효하지 않습니다
- Ubuntu 1804에서 Powershell Core를 최신 버전으로 업데이트하는 방법
- github - 자식 서브 모듈을 최신으로 업데이트하는 방법
- MySQL에서 최신 날짜로 데이터 업데이트
- php - League \ Monga 업데이트 쿼리 예
- mysql - 기본 키 열이없는 다른 테이블의 최신 레코드로 조인으로 업데이트
- sql server - 다른 테이블의 최신 날짜가있는 테이블의 mssql 스크립트를 mysql 업데이트 열로 변환하십시오
관련 질문
- java : Bazel에서 ReuseForks=false에 해당하는 것은 무엇입니까?
- java : 요청된 대상에 대한 유효한 인증 경로를 찾을 수 없음 -github에 대한 링크
- java : 속성 파일을 공유하고 여러 스프링 부트 프로젝트 간에 확장
- java : 422 Unprocessable Entity에서 사용자 정의 응답 JSON 가져오기
- java : 리소스에서 config.yaml로 Dropwizard 시작
- java : 하나의 Maven 프로젝트에서 다른 리소스 파일을 사용하여 두 개의 항아리를 만드는 방법
- "[오류] {생략} 모듈 jdk.compiler는 EclIpse에서 Maven을 사용하는 동안 이름이 지정되지 않은 모듈 @73ad993b에 대해 "com.sun.tools.javac.processing을 열지" 않습니다.
- Java Jersey: UriInfo를 사용하여 REST URL에 대한 여러 쿼리 매개변수를 처리하는 방법
- java : 어떤 종속성이 전이 종속성의 버전을 재정의하는지(Maven)
- java : Maven 프레임워크를 추가하면 프로젝트에 문제가 발생합니다.
이것은 당신이 일한 예제를 얻지 못한다는 것을 알고 있습니다 (예제 링크가 깨졌습니다)-Jersey 1을 잘 모르고 다른 사람의 프로젝트를 업그레이드하는 것은 어렵습니다.
HelloWorld
를 요구하는 또 다른 질문이 있으니 예를 들어, Jersey&Jetty를 이용하려면 무언가가 필요하다고 가정합니다.여기서
JettyHttpContainerFactory
를 사용하는 두 가지 예가 있습니다. 다른 하나는Jersey
를 사용하여 와이즈 비즈 .저지 저지 자원-정말 간단합니다. 이것은 클래스를
ServletContainer
의 경로로 설정합니다. 및"test"
경로를 가진 한 가지 방법hello
수락 일반 텍스트로 "Hello World"를 생성합니다.다음 서버 클래스 :
그리고 마지막으로 pom 의존성 (두 예제 모두에 대한 의존성이 있음).
또한 기능에 대한 이해는 https://jersey.java.net/apidocs/2.7/jersey/javax/ws/rs/core/Feature.html을 참조하십시오-클래스 경로에 Moxy를 포함 시키면 Jersey는 자동으로 MoxyJSON 특징. Jackson을 사용하려면 JacksonFeature 및 종속성을 수동으로 등록해야합니다. 리소스를 등록하는 것과 동일한 초기화 매개 변수 (쉼표로 구분)로 모든 기능을 등록 할 수 있습니다.
서블릿으로 구성하려면 이것을 ExampleServer 코드로 사용하십시오
서블릿 버전과 관련하여, 나는 리소스의 클래스 이름을 정의하고있다. 몇 가지가 있다면
public class ExampleServer { public static void main(String[] args) throws Exception { Server server = new Server(9998); ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS); context.setContextPath("/"); server.setHandler(context); ServletHolder jerseyServlet = context.addServlet(org.glassfish.jersey.servlet.ServletContainer.class, "/*"); jerseyServlet.setInitOrder(0); /*This parameter tells the Jersey Servlet which of your REST resources to load. In this example we're adding the TestResource class. Jersey will then invoke this class for requests coming into paths denoted by the @Path parameter within the TestResource class. If you have multiple classes, you can either list them all comma separated, of use "jersey.config.server.provider.packages" and list the package name instead */ jerseyServlet.setInitParameter("jersey.config.server.provider.classnames", "foo.bar.TestResource"); server.start(); server.join(); } }
를 사용하는 대신 패키지 이름을 제공하는 것이 가장 좋습니다.이것이 도움이되기를 바랍니다. 문제가 있으면 알려주세요.
윌
jersey.config.server.provider.packages