关于CXFNonSpringServlet的用法!

29 views
Skip to first unread message

SkyTiger

unread,
Aug 6, 2008, 1:10:22 AM8/6/08
to cxf-zh
开始的这句:System.setProperty(BusFactory.BUS_FACTORY_PROPERTY_NAME,
"org.apache.cxf.bus.CXFBusFactory");
有什么作用?

使用CXFNonSpringServlet和使用CXFServlet的根本区别是什么,我这里指的是使用方面!

目前我直接使用CXFNonSpringServlet来替换CXFServlet,发生如下错误:
SEVERE: an AnnotationVisitor
(org.apache.cxf.common.injection.ResourceInjector@149f041) raised an
exception on element public void
org.apache.cxf.transport.jms.JMSTransportFactory.setBus(org.apache.cxf.Bus).
java.lang.NullPointerException
at javax.naming.InitialContext.getURLScheme(Unknown Source)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(Unknown Source)
at javax.naming.InitialContext.lookup(Unknown Source)
at
org.apache.cxf.transport.servlet.ServletContextResourceResolver.resolve(ServletContextResourceResolver.java:
62)
at
org.apache.cxf.resource.DefaultResourceManager.findResource(DefaultResourceManager.java:
99)
at
org.apache.cxf.resource.DefaultResourceManager.resolveResource(DefaultResourceManager.java:
55)
at
org.apache.cxf.common.injection.ResourceInjector.resolveResource(ResourceInjector.java:
401)
at
org.apache.cxf.common.injection.ResourceInjector.visitMethod(ResourceInjector.java:
185)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at
org.apache.cxf.common.annotation.AnnotationProcessor.visitAnnotatedElement(AnnotationProcessor.java:
131)
at
org.apache.cxf.common.annotation.AnnotationProcessor.processMethods(AnnotationProcessor.java:
103)
at
org.apache.cxf.common.annotation.AnnotationProcessor.accept(AnnotationProcessor.java:
90)
at
org.apache.cxf.common.injection.ResourceInjector.inject(ResourceInjector.java:
81)
at
org.apache.cxf.common.injection.ResourceInjector.inject(ResourceInjector.java:
76)
at
org.apache.cxf.bus.extension.ExtensionManagerImpl.loadAndRegister(ExtensionManagerImpl.java:
165)
at
org.apache.cxf.bus.extension.ExtensionManagerImpl.activateViaNS(ExtensionManagerImpl.java:
86)
at
org.apache.cxf.bus.extension.ExtensionManagerImpl.activateAll(ExtensionManagerImpl.java:
94)
at org.apache.cxf.bus.extension.DeferredMap.undefer(DeferredMap.java:
36)
at
org.apache.cxf.transport.DestinationFactoryManagerImpl.getDestinationFactoryForUri(DestinationFactoryManagerImpl.java:
136)
at
org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpointInfo(AbstractWSDLBasedEndpointFactory.java:
160)
at
org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:
102)
at
org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:
114)
at
org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBean.java:
160)
at org.apache.cxf.jaxws.EndpointImpl.getServer(EndpointImpl.java:322)
at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:244)
at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:194)
at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:380)
at impl.WSHandler.registerService(WSHandler.java:19)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at
org.springframework.osgi.service.importer.internal.aop.ServiceInvoker.doInvoke(ServiceInvoker.java:
59)
at
org.springframework.osgi.service.importer.internal.aop.ServiceInvoker.invoke(ServiceInvoker.java:
67)
at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:
171)
at
org.springframework.osgi.service.importer.internal.aop.ServiceTCCLInterceptor.invoke(ServiceTCCLInterceptor.java:
34)
at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:
171)
at
org.springframework.osgi.service.importer.support.LocalBundleContextAdvice.invoke(LocalBundleContextAdvice.java:
59)
at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:
171)
at
org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:
131)
at
org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:
119)
at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:
171)
at
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:
204)
at $Proxy15.registerService(Unknown Source)
at webservice.Activator.publish(Activator.java:32)
at webservice.Activator.start(Activator.java:24)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:
1325)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:
1294)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:
1257)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:
438)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory
$1.run(AbstractAutowireCapableBeanFactory.java:383)
at java.security.AccessController.doPrivileged(Native Method)

SkyTiger

unread,
Aug 6, 2008, 4:40:59 AM8/6/08
to cxf-zh
org.apache.cxf.bus.extension.ExtensionManagerBus@c0c8b5

怎么是这个总线?

SkyTiger

unread,
Aug 6, 2008, 5:20:35 AM8/6/08
to cxf-zh
直接式昨天的例子:
Aug 6, 2008 2:49:20 PM sun.reflect.NativeMethodAccessorImpl invoke0
INFO: Logging to org.slf4j.impl.JDK14LoggerAdapter(org.mortbay.log)
via org.mortbay.log.Slf4jLog
Aug 6, 2008 2:49:20 PM sun.reflect.NativeMethodAccessorImpl invoke0
INFO: jetty-6.1.9
Aug 6, 2008 2:49:20 PM
org.apache.cxf.transport.servlet.CXFNonSpringServlet loadBusNoConfig
INFO: Load the bus without application context
Aug 6, 2008 2:49:21 PM
org.apache.cxf.transport.servlet.AbstractCXFServlet
replaceDestinationFactory
INFO: Replaced the http destionFactory with servlet transport factory
Aug 6, 2008 2:49:21 PM sun.reflect.NativeMethodAccessorImpl invoke0
INFO: Started SocketC...@0.0.0.0:9000
Aug 6, 2008 2:49:21 PM
org.apache.cxf.service.factory.ReflectionServiceFactoryBean
buildServiceFromClass
INFO: Creating Service {http://demo/}HelloWorldImplService from class
demo.HelloWorld
Aug 6, 2008 2:49:21 PM
org.apache.cxf.common.annotation.AnnotationProcessor
visitAnnotatedElement
SEVERE: an AnnotationVisitor
(org.apache.cxf.common.injection.ResourceInjector@1732ed2) raised an
org.apache.cxf.jaxws.spi.ProviderImpl.createAndPublishEndpoint(ProviderImpl.java:
84)
at javax.xml.ws.Endpoint.publish(Unknown Source)
at test.NoSpringServletServer.run(NoSpringServletServer.java:39)

SkyTiger

unread,
Aug 6, 2008, 5:21:06 AM8/6/08
to cxf-zh
例子代码:

public class NoSpringServletServer extends Thread {
Server httpServer;
@Override
public void run() {
// setup the system properties
String busFactory =
System.getProperty(BusFactory.BUS_FACTORY_PROPERTY_NAME);
System.setProperty(BusFactory.BUS_FACTORY_PROPERTY_NAME,
"org.apache.cxf.bus.CXFBusFactory");
try {
httpServer = new Server(9000);
ContextHandlerCollection contexts = new
ContextHandlerCollection();
httpServer.setHandler(contexts);

Context root = new Context(contexts, "/",
Context.SESSIONS);

CXFNonSpringServlet cxf = new CXFNonSpringServlet();
ServletHolder servlet = new ServletHolder(cxf);
servlet.setName("soap");
servlet.setForcedPath("soap");
root.addServlet(servlet, "/soap/*");

httpServer.start();

Bus bus = cxf.getBus();
BusFactory.setDefaultBus(bus);
HelloWorld impl = new HelloWorldImpl();
Endpoint.publish("/Greeter", impl);
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
// clean up the system properties
if (busFactory != null) {

System.setProperty(BusFactory.BUS_FACTORY_PROPERTY_NAME, busFactory);
} else {

System.clearProperty(BusFactory.BUS_FACTORY_PROPERTY_NAME);
}
}
}

public void tearDown() throws Exception {
if (httpServer != null) {
httpServer.stop();
}
}

public static void main(String[] args) {
try {
NoSpringServletServer s = new NoSpringServletServer();
s.start();
} catch (Exception ex) {
ex.printStackTrace();
System.exit(-1);
} finally {
System.out.println("done!");
}
}

}

SkyTiger

unread,
Aug 6, 2008, 6:19:09 AM8/6/08
to cxf-zh
更详细的信息,请参考:

http://www.itpub.net/thread-1033760-1-1.html

willem

unread,
Aug 6, 2008, 9:34:56 AM8/6/08
to cxf-zh
刚才查了一下commit log[1] 和 JIRA[2] , 你的这个问题应该是在CXF 2.1.1 中fix了。

[1]http://svn.apache.org/viewvc?rev=651961&view=rev
[2]https://issues.apache.org/jira/browse/CXF-1552

姜宁 (Willem)
--------------------------------
http://willem.bokeland.com
http://www.ohloh.net/accounts/4473

willem

unread,
Aug 6, 2008, 9:39:39 AM8/6/08
to cxf-zh
这个Bus 是处理非Spring configuration file , ExtensionManager 是通过JSR250
中的Resource Annotation来完成 CXF Component 的组装工作。

姜宁 (Willem)
--------------------------------
http://willem.bokeland.com
http://www.ohloh.net/accounts/4473


On 8月6日, 下午4时40分, SkyTiger <darktemplars...@gmail.com> wrote:
> org.apache.cxf.bus.extension.ExtensionManagerBus@c0c8b5
>
> 怎么是这个总线?

SkyTiger

unread,
Aug 6, 2008, 1:51:14 PM8/6/08
to cxf-zh
难道NOSPRING的情况,使用的是解析WSDL文件而不是类反射机制来获取元数据信息?

On 8月6日, 下午9时39分, willem <willem.ji...@gmail.com> wrote:
> 这个Bus 是处理非Spring configuration file , ExtensionManager 是通过JSR250
> 中的Resource Annotation来完成 CXF Component 的组装工作。
>
> 姜宁 (Willem)
> --------------------------------http://willem.bokeland.comhttp://www.ohloh.net/accounts/4473
>
> On 8月6日, 下午4时40分, SkyTiger <darktemplars...@gmail.com> wrote:
>
>
>
> > org.apache.cxf.bus.extension.ExtensionManagerBus@c0c8b5
>
> > 怎么是这个总线?- 隐藏被引用文字 -
>
> - 显示引用的文字 -
Reply all
Reply to author
Forward
0 new messages