Embedded EJB3.0 and Web service problems
thillerson Sep 14, 2006 9:57 PMI'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