Java 使用内置HTTP服务器运行Jersey
我正在尝试使用内置的HTTP服务器从命令行运行一个简单的Jersey应用程序 根据各种教程,我将我的应用程序设置为: src/main/java/net/wjlafrance/jerseyfun/App.java: src/main/webapp/WEB-INF/WEB.xml: 很明显,我的服务器配置错误。有人能给我指出正确的方向吗?请参阅错误消息中的这一行“ResourceConfig实例不包含任何根资源类”? 您没有为http服务器设置任何资源。 我将使用以下方法:Java 使用内置HTTP服务器运行Jersey,java,jersey,Java,Jersey,我正在尝试使用内置的HTTP服务器从命令行运行一个简单的Jersey应用程序 根据各种教程,我将我的应用程序设置为: src/main/java/net/wjlafrance/jerseyfun/App.java: src/main/webapp/WEB-INF/WEB.xml: 很明显,我的服务器配置错误。有人能给我指出正确的方向吗?请参阅错误消息中的这一行“ResourceConfig实例不包含任何根资源类”? 您没有为http服务器设置任何资源。 我将使用以下方法: GrizzlyHttp
GrizzlyHttpServerFactory.createHttpServer("http://localhost:9998/", new Application());
新的应用程序()将为http服务器创建一个新的ResourceConfig类。你应该检查jersey的文档,它只是一个包含java包的简单类。
我的ResourceConfig如下所示:
导入org.glassfish.jersey.server.ResourceConfig
public class Application extends ResourceConfig {
public Application() {
packages("ftp.recourse");
}
}
而ftp.resource包包含所有路径和操作,如GET、PUT、POST。
查看泽西岛的官方文件了解更多详情。希望这会有所帮助您应该执行以下操作:
final com.sun.jersey.api.core.ResourceConfig packagesResourceConfig = new com.sun.jersey.api.core.ResourceConfig("net.wjlafrance.jerseyfun") ;
HttpServerFactory.create("http://localhost:9998/", packagesResourceConfig).start();
对于Jersey 1.x,@pakOverflow的答案指向正确的方向。这里是我成功使用的完整代码。不依赖于Grizlly1或Grizlly2等
import java.io.IOException;
import java.util.HashSet;
import java.util.Set;
import javax.ws.rs.core.Application;
import com.sun.jersey.api.container.httpserver.HttpServerFactory;
import com.sun.jersey.api.core.DefaultResourceConfig;
import com.sun.jersey.api.core.ResourceConfig;
public class WineryUsingHttpServer {
public static void main(String[] args) throws IOException {
ResourceConfig packagesResourceConfig = new DefaultResourceConfig();
Application app = new Application() {
@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> res = new HashSet<>();
res.add(org.example.MainResource.class);
return res;
}
};
packagesResourceConfig.add(app);
HttpServerFactory.create("http://localhost:8080/", packagesResourceConfig).start();
}
}
import java.io.IOException;
导入java.util.HashSet;
导入java.util.Set;
导入javax.ws.rs.core.Application;
导入com.sun.jersey.api.container.httpserver.HttpServerFactory;
导入com.sun.jersey.api.core.DefaultResourceConfig;
导入com.sun.jersey.api.core.ResourceConfig;
使用HttpServer的公共类酿酒厂{
公共静态void main(字符串[]args)引发IOException{
ResourceConfig PackageResourceConfig=新的DefaultResourceConfig();
应用程序app=新应用程序(){
@凌驾
public Set>res=new HashSet();
res.add(org.example.MainResource.class);
返回res;
}
};
packagesResourceConfig.add(app);
HttpServerFactory.create(“http://localhost:8080/,PackageResourceConfig.start();
}
}
你能评论一下你使用的pom.xml
?com.sun.jersey.api.core.ResourceConfig是抽象的;无法实例化
public class Application extends ResourceConfig {
public Application() {
packages("ftp.recourse");
}
}
final com.sun.jersey.api.core.ResourceConfig packagesResourceConfig = new com.sun.jersey.api.core.ResourceConfig("net.wjlafrance.jerseyfun") ;
HttpServerFactory.create("http://localhost:9998/", packagesResourceConfig).start();
import java.io.IOException;
import java.util.HashSet;
import java.util.Set;
import javax.ws.rs.core.Application;
import com.sun.jersey.api.container.httpserver.HttpServerFactory;
import com.sun.jersey.api.core.DefaultResourceConfig;
import com.sun.jersey.api.core.ResourceConfig;
public class WineryUsingHttpServer {
public static void main(String[] args) throws IOException {
ResourceConfig packagesResourceConfig = new DefaultResourceConfig();
Application app = new Application() {
@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> res = new HashSet<>();
res.add(org.example.MainResource.class);
return res;
}
};
packagesResourceConfig.add(app);
HttpServerFactory.create("http://localhost:8080/", packagesResourceConfig).start();
}
}