日期:2014-05-20  浏览次数:20621 次

最简单CXF的配置问题
刚学Web Service ,用的是apache-cxf-2.2.7。

但是第一个简单的发布Service都没成功,暂时不集成spring,生成不了wsdl.xml 。

web.xml
XML code

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
   
    <servlet>
        <servlet-name>CXFServlet</servlet-name>
        <display-name>CXF Servlet</display-name>
        <servlet-class>
            org.apache.cxf.transport.servlet.CXFServlet
        </servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>CXFServlet</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>


</web-app>



Java code

package com.pal.service.api;

import javax.jws.WebService;

@WebService
public interface SayHello {
    
    public String hello();
  
}



Java code

package com.pal.service.impl;
import javax.jws.WebService;
import com.pal.service.api.SayHello;
@WebService(endpointInterface="com.pal.service.api.SayHello",serviceName="SayHello")
public class SayHelloImpl implements SayHello {
    public String hello() {
        return "hello , Web Service !";
    }
}




Java code

package com.pal.service.app;

import javax.xml.ws.Endpoint;
import com.pal.service.impl.SayHelloImpl;

public class WebApp {
   public static void main(String[] args) {
       System.out.println("Starting Server");
       SayHelloImpl implementor = new SayHelloImpl();
       String address = "http://localhost:8080/helloWorld";
       Endpoint.publish(address, implementor);
   }
}




访问http://localhost:8080/helloWorld。Tomcate 报告404 !
这是最简单的发布服务的配置了,那里有问题呢???

------解决方案--------------------
你用 main 方法运行的话,CXF 会启动内置的 jetty 服务器来提供 Web 服务,因此那个 web.xml 配了等于没配。

如果你是用 main 方法启动的,实在没出看来有什么问题。

一般用 main 启动的话,启动正常会在控制台中输出日志的,我不知道你看到日志了没有?