1 Reply Latest reply on Jan 11, 2007 2:12 PM by opepin

    Embedded EJB3.0 and Web service problems

    thillerson

      I've been using Embedded JBoss EJB3.0 for a while now, but pretty new, and I'm brand new to JBoss web services.

      First of all, I can't tell, is it possible to access web services using Embedded JBoss? Do I need to have some extra JbossWS artifacts around as well?

      In case I can, here's my problem. I used wstool to generate my stubs and mapping file. Here is my ejb-jar.xml:

      <?xml version="1.0" encoding="UTF-8"?>
      <ejb-jar 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/j2ee http://java.sun.com/xml/ns/j2ee/ejb-jar_3_0.xsd"
       xmlns:campaignComplete="http://api.campaigncomplete.com/WebApi"
       version="3.0"
      >
       <enterprise-beans>
       <session>
       <ejb-name>EmailCampaignServiceEJB</ejb-name>
       <local>com.jlhalsey.mcc.webservices.EmailCampaignService</local>
       <ejb-class>com.jlhalsey.mcc.webservices.EmailCampaignServiceBean</ejb-class>
       <service-ref>
       <service-ref-name>service/CampaignCompleteService</service-ref-name>
       <service-interface>com.campaigncomplete.api.webapi.NonHostedDataService</service-interface>
       <wsdl-file>META-INF/wsdl/NonHostedDataService.wsdl</wsdl-file>
       <jaxrpc-mapping-file>META-INF/jaxrpc-mapping.xml</jaxrpc-mapping-file>
       <service-qname>campaignComplete:NonHostedDataService</service-qname>
       <!--<mapped-name>service/CampaignCompleteService</mapped-name>
       --><injection-target>
       <injection-target-class>com.jlhalsey.mcc.webservices.EmailCampaignServiceBean</injection-target-class>
       <injection-target-name>nonHostedDataService</injection-target-name>
       </injection-target>
       <port-component-ref>
       <service-endpoint-interface>com.campaigncomplete.api.webapi.NonHostedDataServiceSoap</service-endpoint-interface>
       </port-component-ref>
       </service-ref>
       </session>
       </enterprise-beans>
      </ejb-jar>


      And here is my session bean:

      package com.jlhalsey.mcc.webservices;
      
      import javax.ejb.Local;
      import javax.ejb.Stateless;
      
      import com.campaigncomplete.api.webapi.HelloWorld;
      import com.campaigncomplete.api.webapi.HelloWorldResponse;
      import com.campaigncomplete.api.webapi.NonHostedDataService;
      import com.campaigncomplete.api.webapi.NonHostedDataServiceSoap;
      
      @Stateless(mappedName = "EmailCampaignServiceEJB")
      @Local(value={EmailCampaignService.class})
      public class EmailCampaignServiceBean implements EmailCampaignService {
      
       private NonHostedDataService nonHostedDataService;
      
       public String helloWorld() throws Exception {
       NonHostedDataServiceSoap port = (NonHostedDataServiceSoap) nonHostedDataService.getNonHostedDataServiceSoap();
      
       HelloWorldResponse respond = port.helloWorld(new HelloWorld());
       return respond.getHelloWorldResult();
       }
      
       public void setNonHostedDataService(NonHostedDataService service) {
       this.nonHostedDataService = service;
       }
      
      }


      into which I'm trying to get a proxy of the service injected. It won't inject because it says that "service" is not bound.

      Do I have a jndi problem? a configuration problem? Or am I doing something completely wrong?

      Thank you,
      Tony