最简单CXF的配置问题

palgerrard 2010-03-29 09:18:07
刚学Web Service ,用的是apache-cxf-2.2.7。

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

web.xml

<?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>



package com.pal.service.api;

import javax.jws.WebService;

@WebService
public interface SayHello {

public String hello();

}



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 !";
}
}




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 !
这是最简单的发布服务的配置了,那里有问题呢???
...全文
924 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lg_asus 2012-01-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 bao110908 的回复:]
我的MyEclipse中还没配置jetty服务器呢,看来还是用spring来配置,我试试看...


哎,你还是没看懂我在说什么!

如果你用你最后那个 main 运行的话,CXF 会使用其内置的 jetty 服务器。
[/Quote]

火龙果大神,膜拜!
  • 打赏
  • 举报
回复
我的MyEclipse中还没配置jetty服务器呢,看来还是用spring来配置,我试试看...


哎,你还是没看懂我在说什么!

如果你用你最后那个 main 运行的话,CXF 会使用其内置的 jetty 服务器
palgerrard 2010-03-29
  • 打赏
  • 举报
回复
嗯,Spring配置的运行成功了!
palgerrard 2010-03-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bao110908 的回复:]
你用 main 方法运行的话,CXF 会启动内置的 jetty 服务器来提供 Web 服务,因此那个 web.xml 配了等于没配。

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

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

我的MyEclipse中还没配置jetty服务器呢,看来还是用spring来配置,我试试看...
palgerrard 2010-03-29
  • 打赏
  • 举报
回复
哦,要用Tomcat就一定要依赖于Spring啊。。。

那如果我想用jetty服务器,怎样访问呢?
下面是运行main方法,后台打印的信息:
Starting Server
2010-3-28 21:58:51 org.springframework.context.support.AbstractApplicationContext prepareRefresh
信息: Refreshing org.apache.cxf.bus.spring.BusApplicationContext@10f6d3: display name [org.apache.cxf.bus.spring.BusApplicationContext@10f6d3]; startup date [Sun Mar 28 21:58:51 CST 2010]; root of context hierarchy
2010-3-28 21:58:52 org.springframework.beans.factory.support.DefaultListableBeanFactory registerBeanDefinition
信息: Overriding bean definition for bean 'org.apache.cxf.transport.http.policy.HTTPClientAssertionBuilder': replacing [Generic bean: class [org.apache.cxf.transport.http.policy.HTTPClientAssertionBuilder]; scope=singleton; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in URL [jar:file:/H:/Java%20EE%20Project/CXFTest/WebRoot/WEB-INF/lib/cxf-2.2.7.jar!/META-INF/cxf/cxf-extension-http.fixml]] with [Generic bean: class [org.apache.cxf.transport.http.policy.HTTPClientAssertionBuilder]; scope=singleton; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in URL [jar:file:/H:/Java%20EE%20Project/CXFTest/WebRoot/WEB-INF/lib/cxf-2.2.7.jar!/META-INF/cxf/cxf-extension-http.fixml]]
2010-3-28 21:58:52 org.springframework.beans.factory.support.DefaultListableBeanFactory registerBeanDefinition
信息: Overriding bean definition for bean 'org.apache.cxf.transport.http.policy.HTTPServerAssertionBuilder': replacing [Generic bean: class [org.apache.cxf.transport.http.policy.HTTPServerAssertionBuilder]; scope=singleton; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in URL [jar:file:/H:/Java%20EE%20Project/CXFTest/WebRoot/WEB-INF/lib/cxf-2.2.7.jar!/META-INF/cxf/cxf-extension-http.fixml]] with [Generic bean: class [org.apache.cxf.transport.http.policy.HTTPServerAssertionBuilder]; scope=singleton; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in URL [jar:file:/H:/Java%20EE%20Project/CXFTest/WebRoot/WEB-INF/lib/cxf-2.2.7.jar!/META-INF/cxf/cxf-extension-http.fixml]]
2010-3-28 21:58:52 org.springframework.beans.factory.support.DefaultListableBeanFactory registerBeanDefinition
信息: Overriding bean definition for bean 'org.apache.cxf.transport.http.policy.NoOpPolicyInterceptorProvider': replacing [Generic bean: class [org.apache.cxf.transport.http.policy.NoOpPolicyInterceptorProvider]; scope=singleton; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in URL [jar:file:/H:/Java%20EE%20Project/CXFTest/WebRoot/WEB-INF/lib/cxf-2.2.7.jar!/META-INF/cxf/cxf-extension-http.fixml]] with [Generic bean: class [org.apache.cxf.transport.http.policy.NoOpPolicyInterceptorProvider]; scope=singleton; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in URL [jar:file:/H:/Java%20EE%20Project/CXFTest/WebRoot/WEB-INF/lib/cxf-2.2.7.jar!/META-INF/cxf/cxf-extension-http.fixml]]
2010-3-28 21:58:52 org.springframework.beans.factory.support.DefaultListableBeanFactory registerBeanDefinition
信息: Overriding bean definition for bean 'org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory': replacing [Generic bean: class [org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory]; scope=singleton; abstract=false; lazyInit=true; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in URL [jar:file:/H:/Java%20EE%20Project/CXFTest/WebRoot/WEB-INF/lib/cxf-2.2.7.jar!/META-INF/cxf/cxf-extension-http.fixml]] with [Generic bean: class [org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory]; scope=singleton; abstract=false; lazyInit=true; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in URL [jar:file:/H:/Java%20EE%20Project/CXFTest/WebRoot/WEB-INF/lib/cxf-2.2.7.jar!/META-INF/cxf/cxf-extension-http.fixml]]
2010-3-28 21:58:52 org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory
信息: Bean factory for application context [org.apache.cxf.bus.spring.BusApplicationContext@10f6d3]: org.springframework.beans.factory.support.DefaultListableBeanFactory@16c79d7
2010-3-28 21:58:52 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
信息: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@16c79d7: defining beans [cxf,org.apache.cxf.bus.spring.BusApplicationListener,org.apache.cxf.bus.spring.BusWiringBeanFactoryPostProcessor,org.apache.cxf.bus.spring.Jsr250BeanPostProcessor,org.apache.cxf.bus.spring.BusExtensionPostProcessor,org.apache.cxf.resource.ResourceManager,org.apache.cxf.configuration.Configurer,org.apache.cxf.binding.BindingFactoryManager,org.apache.cxf.transport.DestinationFactoryManager,org.apache.cxf.transport.ConduitInitiatorManager,org.apache.cxf.wsdl.WSDLManager,org.apache.cxf.phase.PhaseManager,org.apache.cxf.workqueue.WorkQueueManager,org.apache.cxf.buslifecycle.BusLifeCycleManager,org.apache.cxf.endpoint.ServerRegistry,org.apache.cxf.endpoint.ServerLifeCycleManager,org.apache.cxf.endpoint.ClientLifeCycleManager,org.apache.cxf.transports.http.QueryHandlerRegistry,org.apache.cxf.endpoint.EndpointResolverRegistry,org.apache.cxf.headers.HeaderManager,org.apache.cxf.catalog.OASISCatalogManager,org.apache.cxf.endpoint.ServiceContractResolverRegistry,org.apache.cxf.binding.corba.CorbaBindingFactory,org.apache.cxf.binding.corba.wsdl.WSDLExtensionRegister#0,org.apache.cxf.jaxws.context.WebServiceContextResourceResolver,org.apache.cxf.jaxws.context.WebServiceContextImpl,org.apache.cxf.binding.soap.SoapBindingFactory,org.apache.cxf.binding.soap.SoapTransportFactory,org.apache.cxf.binding.soap.customEditorConfigurer,org.apache.cxf.binding.xml.XMLBindingFactory,org.apache.cxf.ws.addressing.policy.AddressingAssertionBuilder,org.apache.cxf.ws.addressing.policy.AddressingPolicyInterceptorProvider,org.apache.cxf.ws.addressing.policy.UsingAddressingAssertionBuilder,org.apache.cxf.javascript.JavascriptQueryHandlerRegistry,org.apache.cxf.transport.local.LocalTransportFactory,org.apache.cxf.transport.http.policy.HTTPClientAssertionBuilder,org.apache.cxf.transport.http.policy.HTTPServerAssertionBuilder,org.apache.cxf.transport.http.policy.NoOpPolicyInterceptorProvider,org.apache.cxf.transport.http.ClientOnlyHTTPTransportFactory,org.apache.cxf.management.InstrumentationManager,org.apache.cxf.transport.http_jetty.JettyHTTPTransportFactory,org.apache.cxf.transport.jms.JMSTransportFactory,org.apache.cxf.binding.object.ObjectBindingFactory,org.apache.cxf.binding.http.HttpBindingFactory,org.apache.cxf.jaxrs.JAXRSBindingFactory,org.apache.cxf.ws.security.policy.WSSecurityPolicyLoader,org.apache.cxf.ws.policy.AssertionBuilderRegistry,org.apache.cxf.ws.policy.PolicyInterceptorProviderRegistry,org.apache.cxf.ws.policy.attachment.external.DomainExpressionBuilderRegistry,org.apache.cxf.ws.policy.attachment.external.EndpointReferenceDomainExpressionBuilder,org.apache.cxf.ws.policy.PolicyBuilder,org.apache.cxf.ws.policy.PolicyEngine,org.apache.cxf.ws.policy.attachment.wsdl11.Wsdl11AttachmentPolicyProvider,org.apache.cxf.ws.policy.attachment.ServiceModelPolicyProvider,org.apache.cxf.ws.policy.mtom.MTOMAssertionBuilder,org.apache.cxf.ws.policy.mtom.MTOMPolicyInterceptorProvider,org.apache.cxf.ws.rm.RMManager,org.apache.cxf.ws.rm.policy.RMPolicyInterceptorProvider,org.apache.cxf.ws.rm.RMAssertionBuilder]; root of factory hierarchy
2010-3-28 21:58:53 org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
信息: Creating Service {http://impl.service.pal.com/}SayHello from class com.pal.service.api.SayHello
2010-3-28 21:58:53 org.apache.cxf.endpoint.ServerImpl initDestination
信息: Setting the server's publish address to be http://localhost:8080/helloWorld
2010-3-28 21:58:53 org.mortbay.log.Slf4jLog info
信息: Logging to org.slf4j.impl.JDK14LoggerAdapter(org.mortbay.log) via org.mortbay.log.Slf4jLog
2010-3-28 21:58:53 org.mortbay.log.Slf4jLog info
信息: jetty-6.1.21
2010-3-28 21:58:53 org.mortbay.log.Slf4jLog info
信息: Started SelectChannelConnector@localhost:8080
  • 打赏
  • 举报
回复
如果你需要在 tomcat 中运行的话,那么最后那个带有 main 方法的类就不要了。

要把 CXF 扔到 tomcat 中去,需要依赖于 Spring。

参考 CXF 文档:
http://cxf.apache.org/docs/servlet-transport.html
  • 打赏
  • 举报
回复
你用 main 方法运行的话,CXF 会启动内置的 jetty 服务器来提供 Web 服务,因此那个 web.xml 配了等于没配。

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

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

67,550

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧