Web Service client exists in the workspace. Written a unit test to call Web
Service using client code. Below error is thrown.

RuleImporterProcess is an interface but the error ask to implement method in
it.

[junit] Caused by: com.link.exception.SystemException: [exception of type
javax.xml.ws.WebServiceException occured. error message is
org.apache.cxf.service.factory.ServiceConstructionException: Service class
.model.rulehome.service.wsclient.RuleImporterProcess does not implement the
process method.
    [junit]     at
com.link.model.rulehome.service.RuleHomeServiceCaller.getWSClientInstance(RuleHomeServiceCaller.java:65)
    [junit]     at
com.link.model.rulehome.service.RuleHomeServiceCaller.getPredictabilityCost(RuleHomeServiceCaller.java:120)
    [junit]     at
com.link.model.metricsanalyzer.service.PredictabilityMetricsService.<clinit>(PredictabilityMetricsService.java:53)
    [junit]     ... 28 more
    [junit] Caused by: javax.xml.ws.WebServiceException:
org.apache.cxf.service.factory.ServiceConstructionException: Service class
com.link.model.rulehome.service.wsclient.RuleImporterProcess does not
implement the process method.
    [junit]     at
org.apache.cxf.jaxws.ServiceImpl.getPort(ServiceImpl.java:334)
    [junit]     at
org.apache.cxf.jaxws.ServiceImpl.getPort(ServiceImpl.java:319)
    [junit]     at javax.xml.ws.Service.getPort(Service.java:92)
    [junit]     at
com.link.model.rulehome.service.wsclient.client_ep.getRuleImporterProcess_pt(client_ep.java:80)
    [junit]     at
com.link.model.rulehome.service.RuleHomeServiceCaller.getWSClientInstance(RuleHomeServiceCaller.java:62)
    [junit]     ... 30 more
    [junit] Caused by:
org.apache.cxf.service.factory.ServiceConstructionException: Service class
com.link.model.rulehome.service.wsclient.RuleImporterProcess does not
implement the process method.
    [junit]     at
org.apache.cxf.jaxws.JAXWSMethodDispatcher.bind(JAXWSMethodDispatcher.java:68)
    [junit]     at
org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.bindOperation(JaxWsServiceFactoryBean.java:280)
    [junit]     at
org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.initializeWSDLOperation(JaxWsServiceFactoryBean.java:254)
    [junit]     at
org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeWSDLOperations(ReflectionServiceFactoryBean.java:652)
    [junit]     at
org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.initializeWSDLOperations(JaxWsServiceFactoryBean.java:289)
    [junit]     at
org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildServiceFromWSDL(ReflectionServiceFactoryBean.java:393)
    [junit]     at
org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:506)
    [junit]     at
org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:242)
    [junit]     at
org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(JaxWsServiceFactoryBean.java:202)
    [junit]     at
org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:101)
    [junit]     at
org.apache.cxf.frontend.ClientFactoryBean.create(ClientFactoryBean.java:90)
    [junit]     at
org.apache.cxf.frontend.ClientProxyFactoryBean.create(ClientProxyFactoryBean.java:155)
    [junit]     at
org.apache.cxf.jaxws.JaxWsProxyFactoryBean.create(JaxWsProxyFactoryBean.java:153)
    [junit]     at
org.apache.cxf.jaxws.ServiceImpl.createPort(ServiceImpl.java:465)
    [junit]     at
org.apache.cxf.jaxws.ServiceImpl.getPort(ServiceImpl.java:332)
    [junit]     ... 34 more
    [junit] Caused by: java.lang.NoSuchMethodException:
com.link.model.rulehome.service.wsclient.RuleImporterProcess.process(com.link.model.rulehome.service.wsclient.Process)
    [junit]     at java.lang.Class.getMethod(Class.java:1605)
    [junit]     at
org.apache.cxf.jaxws.JAXWSMethodDispatcher.getImplementationMethod(JAXWSMethodDispatcher.java:88)
    [junit]     at
org.apache.cxf.jaxws.JAXWSMethodDispatcher.bind(JAXWSMethodDispatcher.java:55)
    [junit]     ... 48 more


Unit test Code is:


package com.link.rulehome.service;

import com.link.model.rulehome.service.wsclient.RuleImporterProcess;
import com.link.model.rulehome.service.wsclient.Process;
import com.link.model.rulehome.service.wsclient.RuleTemplate;
import com.link.model.rulehome.service.wsclient.RulesResponseType;

import java.net.URL;
import java.util.Iterator;
import java.util.List;
import java.util.Properties;

import javax.ejb.embeddable.EJBContainer;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.xml.ws.Service;
import javax.xml.namespace.QName;

import junit.framework.TestCase;

public class RuleImporterServiceTest extends TestCase {

    private InitialContext initialContext;

    protected void setUp() throws Exception {
        Properties properties = new Properties();
        properties.setProperty(Context.INITIAL_CONTEXT_FACTORY,
"org.apache.openejb.client.LocalInitialContextFactory");
        properties.setProperty("openejb.embedded.remotable", "true");
        
        EJBContainer.createEJBContainer(properties);
    }

    /**
     * Create a webservice client using wsdl url
     *
     * @throws Exception
     */
    public void testCalculatorViaWsInterface() throws Exception {
        URL url = new
URL("http://localhost:8001/SOA/RuleImporterService/client_ep?WSDL";);
        QName calcServiceQName = new
QName("http://xmlns.oracle.com/RuleImporterService/RuleImporterProcess";,
"client_ep");
        Service service = Service.create(url, calcServiceQName);
                    
        assertNotNull(service);
        
        Iterator<QName> ite = service.getPorts();// .createCall(port);
        
        while(ite.hasNext()) {
            QName qn = ite.next();
            System.out.println("WS QName : " + qn.getNamespaceURI());
        }
        final RuleImporterProcess rp =
service.getPort(RuleImporterProcess.class);
        Process payload = new Process();
        payload.setRuleName("Commodity Line Assignment");
        RulesResponseType res = rp.process(payload);
        RulesResponseType.Rules rule = res.getRules();
        List<RuleTemplate> listRule = rule.getRule();
        
        for (RuleTemplate rt : listRule) {
            System.out.println("Rule Name # " + rt.getRuleName());
        }
        

    }
}






--
View this message in context: 
http://openejb.979440.n4.nabble.com/ServiceConstructionException-Web-Service-unit-testing-is-not-working-in-OpenEJB-4-0-tp4659899.html
Sent from the OpenEJB Dev mailing list archive at Nabble.com.

Reply via email to