Red Hat Training
A Red Hat training course is available for Red Hat Fuse
31.3. 在 Plain Java 应用程序中发布服务
概述
如果您想将应用部署为普通 java 应用,您需要实施相应的逻辑,以便在应用的 main () 方法中发布端点。Apache CXF 为您提供了两个编写应用程序 main () 方法的选项。
-
使用
wsdl2java工具生成的main ()方法 -
编写发布端点的自定义
main ()方法
生成服务器主线
代码生成器 -server 标志使工具生成一个简单的服务器主线。如 例 31.2 “生成的服务器主线” 所示,生成的服务器主线发布一个服务提供程序,适用于指定 WSDL 合同中的每个 端口 元素。
更多信息请参阅 第 44.2 节 “cxf-codegen-plugin”。
例 31.2 “生成的服务器主线” 显示生成的服务器主行。
例 31.2. 生成的服务器主线
package org.apache.hello_world_soap_http;
import javax.xml.ws.Endpoint;
public class GreeterServer {
protected GreeterServer() throws Exception {
System.out.println("Starting Server");
Object implementor = new GreeterImpl();
String address = "http://localhost:9000/SoapContext/SoapPort";
Endpoint.publish(address, implementor);
}
public static void main(String args[]) throws Exception {
new GreeterServer();
System.out.println("Server ready...");
Thread.sleep(5 * 60 * 1000);
System.out.println("Server exiting");
System.exit(0);
}
}例 31.2 “生成的服务器主线” 中的代码执行以下操作:
实例化服务实施对象的副本。
根据端点合同中的 wsdl:port 元素的内容,为端点创建 地址。
发布端点。
编写服务器主线
如果您使用了 Java 首个开发模型,或者您不想使用生成的服务器主线,您可以自己编写。要写入服务器主行,您必须执行以下操作:
-
“实例化服务提供商”一节 适用于服务供应商的
javax.xml.ws.Endpoint对象。 - 创建在发布服务提供商时要使用的可选服务器上下文。
-
“发布服务供应商”一节 使用其中一个
publish ()方法的服务提供商。 - 当应用程序准备好退出时,停止服务供应商。
例 31.3 “自定义服务器主线” 显示发布服务提供商的代码。
例 31.3. 自定义服务器主线
package org.apache.hello_world_soap_http;
import javax.xml.ws.Endpoint;
public class GreeterServer
{
protected GreeterServer() throws Exception
{
}
public static void main(String args[]) throws Exception
{
GreeterImpl impl = new GreeterImpl();
Endpoint endpt.create(impl);
endpt.publish("http://localhost:9000/SoapContext/SoapPort");
boolean done = false;
while(!done)
{
...
}
endpt.stop();
System.exit(0);
}
}例 31.3 “自定义服务器主线” 中的代码执行以下操作:
实例化服务实施对象的副本。
为服务实施创建未发布 端点。
在 http://localhost:9000/SoapContext/SoapPort 发布服务供应商。
循环,直到服务器关机为止。
停止已发布的端点。