我创建了2个类,一个是RestService类,另一个是主类。
import org.apache.cxf.endpoint.Server;
import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
import org.apache.cxf.jaxrs.lifecycle.SingletonResourceProvider;
import org.apache.cxf.transport.http.HttpDestinationFactory;
import org.apache.cxf.transport.servlet.ServletDestinationFactory;
public class RestDemo {
public static void main(String[] args) {
final JAXRSServerFactoryBean sf = new JAXRSServerFactoryBean();
sf.setAddress("http://0.0.0.0:8080/");
sf.setServiceClass(RestService.class);
sf.setResourceProvider(RestService.class, new SingletonResourceProvider(new RestService()));
ServletDestinationFactory destinationFactory = new ServletDestinationFactory();
sf.getBus().setExtension(destinationFactory, HttpDestinationFactory.class);
Server server = sf.create();
server.start();
System.out.println(server.isStarted());
System.out.println(server.getDestination().getAddress().getAddress().getValue());
System.out.println(server.getEndpoint().getEndpointInfo());
try {
Thread.sleep(1000000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
sop 输出显示服务器已启动,但我无法在端点上执行任何凝乳操作。这是在 Linux 中。我也尝试了linux命令"netstat -anp |grep 8080"检查端口 8080 是否正在侦听,但此命令的输出为空。任何帮助都将是非常可观的。
我需要它作为一个独立的程序,而不是把它作为与春天的战争并将其部署在网络服务器中。我使用的是最新版本的 cxf,其中包含 jetty,因此启动函数应该使用嵌入式 jetty 启动服务器,但这并没有发生。
您的类路径中似乎没有所有必需的 jar。这是一个部署了资源的完整工作项目:
https://drive.google.com/open?id=1KB8trntYF6N0MK8MDeOz_leowQzrgkJR
运行以下命令直接运行主
mvn package exec:java -Dexec.mainClass=com.example.CXFStandalone
主要:
package com.example;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
import org.apache.cxf.jaxrs.lifecycle.SingletonResourceProvider;
public class CXFStandalone {
@Path("/")
public static class RestService {
@GET
public String hello() {
return "Hello world";
}
}
public static void main(String[] args) {
JAXRSServerFactoryBean sf = new JAXRSServerFactoryBean();
sf.setResourceClasses(RestService.class);
sf.setResourceProvider(RestService.class, new SingletonResourceProvider(new RestService()));
sf.setAddress("http://localhost:9000/");
sf.create();
}
}
绒球.xml
<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>com.example</groupId>
<artifactId>cxf-standalone</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>cxf-standalone</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-core</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxrs</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http-jetty</artifactId>
<version>3.2.1</version>
</dependency>
</dependencies>
</project>