Java JDK6HTTP服务器上Spring3的REST服务
有没有可能在没有servlet容器的情况下使用Spring3.0创建REST服务?因为我不想使用应用服务器。 我试图用SimpleHttpInvokerServiceExporter和SpringMVC创建REST服务,但我得到了一个Java JDK6HTTP服务器上Spring3的REST服务,java,spring,rest,spring-mvc,simplehttpserver,Java,Spring,Rest,Spring Mvc,Simplehttpserver,有没有可能在没有servlet容器的情况下使用Spring3.0创建REST服务?因为我不想使用应用服务器。 我试图用SimpleHttpInvokerServiceExporter和SpringMVC创建REST服务,但我得到了一个java.lang.NoClassDefFoundError:javax/servlet/ServletException,因为我不使用servlet容器。我的代码如下所示: <beans> ... <bean name="servic
java.lang.NoClassDefFoundError:javax/servlet/ServletException
,因为我不使用servlet容器。我的代码如下所示:
<beans>
...
<bean name="serviceFacadeExporter"
class="org.springframework.remoting.httpinvoker.SimpleHttpInvokerServiceExporter">
<property name="service" ref="serviceFacade" />
<property name="serviceInterface" value="facade.ServiceFacade" />
</bean>
<bean id="httpServer"
class="org.springframework.remoting.support.SimpleHttpServerFactoryBean">
<property name="contexts">
<map>
<entry key="/api/" value-ref="serviceFacadeExporter" />
</map>
</property>
<property name="port" value="8082" />
</bean>
...
</beans>
SpringMVC需要ServletAPI 您可以通过以下方式使用JSE6HTTP服务器创建一个简单的Rest服务 您可以创建一个资源类
@Path("/helloworld")
public class MyResource {
// The Java method will process HTTP GET requests
@GET
// The Java method will produce content identified by the MIME Media
// type "text/plain"
@Produces("text/plain")
public String getClichedMessage() {
// Return some cliched textual content
return "Hello World";
}
}
您可以创建一个Rest应用程序
public class MyApplication extends javax.ws.rs.core.Application{
public Set<Class<?>> getClasses() {
Set<Class<?>> s = new HashSet<Class<?>>();
s.add(MyResource.class);
return s;
}
}
就这些。不需要Spring MVC
出于测试目的,这工作得非常好,对于许多请求的高效使用,我将使用Jetty或Tomcat之类的WebContainer
可以找到关于如何使用标准JSE6HttpServer构建RESTFul的更详细描述
(德语)First REST表示HTTP。因此,您需要servlet容器来满足REST请求。我想使用Jdk6 HTTP服务器。所以我的http没有servlet容器。你为什么不想在servlet容器中运行呢?谢谢你,这对我帮助很大,但是如果知道是否有一种方法可以解决spring远程处理的这个问题,那将是很有趣的。是的。。。其次,我也希望看到Spring和SpringMVC解决了这个问题。
public class MyApplication extends javax.ws.rs.core.Application{
public Set<Class<?>> getClasses() {
Set<Class<?>> s = new HashSet<Class<?>>();
s.add(MyResource.class);
return s;
}
}
HttpServer server = HttpServer.create(new InetSocketAddress(8080), 25);
HttpContext context = server.createContext("/resources");
HttpHandler handler = RuntimeDelegate.getInstance().createEndpoint
(new MyApplication(), HttpHandler.class);
context.setHandler(handler);
server.start();