I have been able to get my EJB exposed as a web service by hard-coding the
registration in a servlet that extends XFireServlet, BUT I would prefer to use
the XFireConfigurableServlet and use the services.xml file. Some of my
previous attempts failed with NoWritablePropertyException for the invoker. I
found an old forum posting that suggested some slight changes to the
services.xml due to xml namespaces issues. Below is a copy of my current
services.xml
services.xml
-------------------------------------------------------------------------------------------------------------------
<beans>
<bean id="decryptionInvoker"
class="com.jda.portfolio.infrastructure.server.service.security.EJBInvoker">
<constructor-arg
value="com.jda.portfolio.infrastructure.server.service.security.DecryptionService"/>
</bean> <service xmlns="http://xfire.codehaus.org/config/1.0">
<name>Decryption</name>
<serviceClass>com.jda.portfolio.infrastructure.server.service.security.DecryptionService</serviceClass>
<implementationClass>com.jda.portfolio.infrastructure.server.service.security.DecryptionServiceBean</implementationClass>
<invoker>#decryptionInvoker</invoker> </service> </beans>
Which fails with the following:
-----------------------------------------------------------------------------------------------------------------------------
31-Jul 12:34:06.182 ERROR - XFireServlet.init(40) | Error initializing
XFireServlet.org.springframework.beans.factory.BeanDefinitionStoreException:
Error registering bean with name 'decryptionInvoker' defined in class path
resource [META-INF/xfire/services.xml]: Class that bean class
[com.jda.portfolio.infrastructure.server.service.security.EJBInvoker] depends
on not found; nested exception is java.lang.NoClassDefFoundError:
org/codehaus/xfire/service/invoker/Invokerjava.lang.NoClassDefFoundError:
org/codehaus/xfire/service/invoker/Invoker at
java.lang.ClassLoader.defineClass0(Native Method) at
java.lang.ClassLoader.defineClass(ClassLoader.java:539) at
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
at
weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:476)
at
weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:181)
at
weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(ChangeAwareClassLoader.java:61)
at
weblogic.utils.classloaders.ChangeAwareClassLoader.loadClass(ChangeAwareClassLoader.java:46)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
at java.lang.Class.forName0(Native Method) at
java.lang.Class.forName(Class.java:219) at
org.springframework.util.ClassUtils.forName(ClassUtils.java:108) at
org.springframework.beans.factory.support.BeanDefinitionReaderUtils.createBeanDefinition(BeanDefinitionReaderUtils.java:65)
at
org.springframework.beans.factory.xml.DefaultXmlBeanDefinitionParser.parseBeanDefinitionElement(DefaultXmlBeanDefinitionParser.java:426)
at
org.springframework.beans.factory.xml.DefaultXmlBeanDefinitionParser.parseBeanDefinitionElement(DefaultXmlBeanDefinitionParser.java:392)
at
org.apache.xbean.spring.context.impl.XBeanXmlBeanDefinitionParser.parseBeanDefinitionElement(XBeanXmlBeanDefinitionParser.java:705)
at
org.apache.xbean.spring.context.impl.XBeanXmlBeanDefinitionParser.parseBeanDefinitions(XBeanXmlBeanDefinitionParser.java:672)
at
org.springframework.beans.factory.xml.DefaultXmlBeanDefinitionParser.registerBeanDefinitions(DefaultXmlBeanDefinitionParser.java:191)
at
org.apache.xbean.spring.context.impl.XBeanXmlBeanDefinitionReader.registerBeanDefinitions(XBeanXmlBeanDefinitionReader.java:78)
at
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:223)
at
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:173)
at
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:148)
at
org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:126)
at
org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:142)
at
org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:113)
at
org.apache.xbean.spring.context.ClassPathXmlApplicationContext.loadBeanDefinitions(ClassPathXmlApplicationContext.java:170)
at
org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:89)
at
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:269)
at
org.apache.xbean.spring.context.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:158)
at
org.apache.xbean.spring.context.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:58)
at
org.codehaus.xfire.spring.XFireConfigLoader.loadConfig(XFireConfigLoader.java:66)
at
org.codehaus.xfire.transport.http.XFireConfigurableServlet.createXFire(XFireConfigurableServlet.java:53)
at
org.codehaus.xfire.transport.http.XFireServlet.init(XFireServlet.java:36)
at javax.servlet.GenericServlet.init(GenericServlet.java:258) at
weblogic.servlet.internal.ServletStubImpl$ServletInitAction.run(ServletStubImpl.java:1018)
at
weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at
weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
at
weblogic.servlet.internal.ServletStubImpl.createServlet(ServletStubImpl.java:894)
at
weblogic.servlet.internal.ServletStubImpl.createInstances(ServletStubImpl.java:873)
at
weblogic.servlet.internal.ServletStubImpl.prepareServlet(ServletStubImpl.java:812)
at
weblogic.servlet.internal.WebAppServletContext.preloadServlet(WebAppServletContext.java:3281)
at
weblogic.servlet.internal.WebAppServletContext.preloadServlets(WebAppServletContext.java:3226)
at
weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:3207)
at
weblogic.servlet.internal.HttpServer.preloadResources(HttpServer.java:694)
at weblogic.servlet.internal.WebService.preloadResources(WebService.java:483)
at
weblogic.servlet.internal.ServletInitService.resume(ServletInitService.java:30)
at weblogic.t3.srvr.SubsystemManager.resume(SubsystemManager.java:131)
at weblogic.t3.srvr.T3Srvr.resume(T3Srvr.java:966) at
weblogic.t3.srvr.T3Srvr.run(T3Srvr.java:361) at
weblogic.Server.main(Server.java:32)<Jul 31, 2007 12:34:06 PM CDT> <Error>
<HTTP> <BEA-101216> <Servlet: "CentralWSServlet" failed to preload on startup
inWeb application: "centralwsservlet".javax.servlet.ServletException: Error
initializing XFireServlet.
--------------------------------------------------------------------------------------------------------------------------------------
I have the xfire-all-1.2.6.jar in my WEB-INF/lib folder. Any ideas on what I
am missing or did wrong???
_________________________________________________________________
Local listings, incredible imagery, and driving directions - all in one place!
Find it!
http://maps.live.com/?wip=69&FORM=MGAC01