users@glassfish.java.net

Re: JAX-WS _at_Resource injection fails with HTTP Basic Authentication

From: Ryan de Laplante <ryan_at_ijws.com>
Date: Mon, 04 Jun 2007 14:32:40 -0400

For now I've disabled security for HTTP GET in my service endpoint's
web.xml to solve the problem.


Thanks,
Ryan


Ryan de Laplante wrote:
> Hi,
>
> I recently decided to add http basic authentication to a web service.
> Using a web browser I was able to confirm that I now need to enter a
> username/password before the WSDL will be displayed.
>
> I use a jax-ws web service client inside a @Stateless EJB session
> bean. I have my @WebServiceRef near the top of the class, and it
> worked well until I added the HTTP Basic authentication (as
> expected). I'm getting an exception that indicates the web service
> client was not able to be injected into my EJB.
> EJB5070: Exception creating stateless session bean : [{0}]
> com.sun.enterprise.InjectionException: Exception attempting to inject
> Env-Prop:
> com.company.product.dao.MySessionBean/service_at_Field-Injectable
> Resource. Class name = com.company.product.dao.MySessionBean Field
> name=service_at_javax.jws.WebServiceRef@@@ into class
> com.company.product.dao.MySessionBean
> at
> com.sun.enterprise.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:374)
>
> at
> com.sun.enterprise.util.InjectionManagerImpl.inject(InjectionManagerImpl.java:193)
>
> at
> com.sun.enterprise.util.InjectionManagerImpl.injectInstance(InjectionManagerImpl.java:114)
>
> at
> com.sun.ejb.containers.StatelessSessionContainer.createStatelessEJB(StatelessSessionContainer.java:519)
>
> ..........
> Caused by: javax.xml.ws.WebServiceException: Failed to access the WSDL
> at: https://ryan1.orillia.ijws.local:8181/MyService/MyService?wsdl. It
> failed with:
> Server returned HTTP response code: 401 for URL:
> https://ryan1.orillia.ijws.local:8181/MyService/MyService?wsdl.
> at
> com.sun.xml.ws.wsdl.parser.RuntimeWSDLParser.tryWithMex(RuntimeWSDLParser.java:136)
>
> at
> com.sun.xml.ws.wsdl.parser.RuntimeWSDLParser.parse(RuntimeWSDLParser.java:122)
>
> at
> com.sun.xml.ws.client.WSServiceDelegate.parseWSDL(WSServiceDelegate.java:226)
>
>
>
> Every webpage I have read about HTTP Basic authentication with JAX-WS
> tells me to add the following code before executing one of the web
> service methods:
>
> MyService port = service.getMyServicePort();
> ((BindingProvider)port).getRequestContext().put(BindingProvider.USERNAME_PROPERTY,
> "username");
> ((BindingProvider)port).getRequestContext().put(BindingProvider.PASSWORD_PROPERTY,
> "secret");
>
>
> That doesn't make a difference because the exception is happening
> while the EJB is being created, and the web service reference is being
> injected. I suspect it is trying to access the WSDL before I have a
> chance to tell it a username/password to use.
>
>
>
> Thanks,
> Ryan
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe_at_glassfish.dev.java.net
> For additional commands, e-mail: users-help_at_glassfish.dev.java.net
>
>