You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by Johannes Michler <or...@gmail.com> on 2009/06/24 19:11:11 UTC
Injecting WebServiceContext doesn't work
Hi,
I'm running a jetty-container to host a CFXNonSpringServlet. This works
fine, but then I tried to inject the WebServiceContext into my Webservice.
This didn't work (neither with field- nor with setter-injection). There is a
warning that the injection wasn't performed and then the variable is
null:24.06.2009 19:08:11 org.apache.cxf.common.injection.ResourceInjector
visitField
INFO: failed to resolve resource
biz.horus.database.ws.servercxf.WSReferenceManager/context
When debugging through the visit-field method it seems to me that the
Context is there, but it isn't found/assigned.
The code starting the servlet is as following (using with jetty 6 and
starting it in an equinox-container but this shouldn't be the point I
think?):
Server server = new Server();
Connector connector = new SelectChannelConnector();
connector.setPort(8080);
server.setConnectors(new Connector[] { connector });
Constraint constraint = new Constraint(Constraint.__DIGEST_AUTH,
Constraint.ANY_ROLE);
constraint.setAuthenticate(true);
ConstraintMapping cm = new ConstraintMapping();
cm.setConstraint(constraint);
cm.setPathSpec("/*");
SecurityHandler sh = new SecurityHandler();
sh.setUserRealm(new HashUserRealm("MyRealm", "hashRealm.config"));
sh.setConstraintMappings(new ConstraintMapping[] { cm });
Context jettyContext = new Context(server, "/");
jettyContext.setSecurityHandler(sh);
CXFNonSpringServlet cxf = new CXFNonSpringServlet();
ServletHolder servlet = new ServletHolder(cxf);
servlet.setName("soap");
servlet.setForcedPath("soap");
jettyContext.addServlet(servlet, "/soap/*");
server.start();
Bus bus = cxf.getBus();
BusFactory.setDefaultBus(bus);
ServerFactoryBean factory = new JaxWsServerFactoryBean();
factory.setBus(bus);
factory.setServiceClass(WSReferenceManager.class);
factory.setAddress("/Referencemanager");
factory.create();
Any hints what I could do to solve the Problem? I read about a @Context
annotation, but there is no sucht annotation (having loaded cxf-2.2.2.jar,
wsdl4j-1.6.2.jar and XmlSchema-1.4.5.jar)
Any help would be appreciated,
best regards
- orgler
Re: Injecting WebServiceContext doesn't work
Posted by Daniel Kulp <dk...@apache.org>.
Can you bundle this together into a small sample and attach it to a JIRA?
I'd probably need to debug in and see the stack traces and such.
Dan
On Wed June 24 2009 1:11:11 pm Johannes Michler wrote:
> Hi,
>
> I'm running a jetty-container to host a CFXNonSpringServlet. This works
> fine, but then I tried to inject the WebServiceContext into my Webservice.
> This didn't work (neither with field- nor with setter-injection). There is
> a warning that the injection wasn't performed and then the variable is
> null:24.06.2009 19:08:11 org.apache.cxf.common.injection.ResourceInjector
> visitField
> INFO: failed to resolve resource
> biz.horus.database.ws.servercxf.WSReferenceManager/context
>
> When debugging through the visit-field method it seems to me that the
> Context is there, but it isn't found/assigned.
>
> The code starting the servlet is as following (using with jetty 6 and
> starting it in an equinox-container but this shouldn't be the point I
> think?):
>
> Server server = new Server();
>
> Connector connector = new SelectChannelConnector();
> connector.setPort(8080);
> server.setConnectors(new Connector[] { connector });
>
> Constraint constraint = new Constraint(Constraint.__DIGEST_AUTH,
> Constraint.ANY_ROLE);
> constraint.setAuthenticate(true);
>
> ConstraintMapping cm = new ConstraintMapping();
> cm.setConstraint(constraint);
> cm.setPathSpec("/*");
>
> SecurityHandler sh = new SecurityHandler();
> sh.setUserRealm(new HashUserRealm("MyRealm", "hashRealm.config"));
>
> sh.setConstraintMappings(new ConstraintMapping[] { cm });
>
> Context jettyContext = new Context(server, "/");
> jettyContext.setSecurityHandler(sh);
>
> CXFNonSpringServlet cxf = new CXFNonSpringServlet();
> ServletHolder servlet = new ServletHolder(cxf);
> servlet.setName("soap");
> servlet.setForcedPath("soap");
>
> jettyContext.addServlet(servlet, "/soap/*");
>
> server.start();
>
> Bus bus = cxf.getBus();
> BusFactory.setDefaultBus(bus);
> ServerFactoryBean factory = new JaxWsServerFactoryBean();
> factory.setBus(bus);
> factory.setServiceClass(WSReferenceManager.class);
> factory.setAddress("/Referencemanager");
> factory.create();
>
>
> Any hints what I could do to solve the Problem? I read about a @Context
> annotation, but there is no sucht annotation (having loaded cxf-2.2.2.jar,
> wsdl4j-1.6.2.jar and XmlSchema-1.4.5.jar)
>
> Any help would be appreciated,
>
> best regards
> - orgler
--
Daniel Kulp
dkulp@apache.org
http://www.dankulp.com/blog