【问题标题】:Howto run soap web service on jetty?如何在码头上运行肥皂网络服务?
【发布时间】:2015-11-30 19:09:59
【问题描述】:

我正在努力在我的嵌入式码头服务器上运行一个肥皂网络服务。

我遵循了这个德语教程(哪个 ofc 没用): http://www.torsten-horn.de/techdocs/jee-jax-ws.htm#Deployment-im-Webserver

相关代码片段:

Endpoint ep = Endpoint.publish( url, new BuecherServiceImpl() );
int anzahlBuecherResult = TestWsClient.test( "WsMitEndpointIntegrTest", url, 4000000000L, anzahlBuecher, true );


public static int test( String testName, String url, long startIsbn, int anzahlBuecher, boolean trace ) throws Exception
{
  BuecherServiceIntf buecherService;
  if( url.equalsIgnoreCase( "direkt" ) ) {
     buecherService = new BuecherServiceImpl();
  } else {
     System.out.println( testName + ": " + url );
     Service service = null;
     int timeoutSekunden = 20;
     while( service == null ) {
        try {
           //here the Exception occurs, maybe because of a wrong qname
           service = Service.create(
                 new URL( url + "?wsdl" ),
                 new QName( "http://soap.apachecxf/" , "BuecherServiceImplService" ) );
        } catch( WebServiceException ex ) {
           if( timeoutSekunden-- <= 0 ) throw ex;
           try { Thread.sleep( 1000 ); } catch( InterruptedException e ) {/*ok*/}
        }
     }
     buecherService = service.getPort( BuecherServiceIntf.class );
  }

sun-jaxws.xml

<endpoints version="2.0" xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime">

<endpoint name="BuecherService" implementation="soap.apachecxf.BuecherServiceImpl" url-pattern="/ws/BuecherService" />

</endpoints>

有人可以在这里为我提供帮助吗?

【问题讨论】:

标签: java web-services soap jetty jax-ws


【解决方案1】:

您可以通过覆盖默认的 HttpServerProvider 属性来运行带有嵌入式码头的肥皂网络服务。确保您在类路径中添加了jetty-http-spi jar 文件

System.setProperty("com.sun.net.httpserver.HttpServerProvider", "org.eclipse.jetty.http.spi.JettyHttpServerProvider");

org.eclipse.jetty.http.spi.JettyHttpServerProvider 是由Jetty 提供的implementation of Java HTTP Server SPI

您可以通过查看服务器响应标头来验证正在运行的服务器是否是码头。 这段代码对我有用

public static void main(String[] args) throws Exception {
    ContentWsImplement contentImplement = new ContentWsImplement();
    System.setProperty("com.sun.net.httpserver.HttpServerProvider", "org.eclipse.jetty.http.spi.JettyHttpServerProvider");
    Endpoint.publish("http://0.0.0.0:8000/services/getcontent", contentImplement);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-29
    • 2017-01-16
    • 2017-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-11
    • 1970-01-01
    相关资源
    最近更新 更多