Preloader image

Help us document this example! Click the blue pencil icon in the upper right to edit this page.

Calculator

package org.superbiz.calculator;

import jakarta.ejb.Stateless;
import jakarta.jws.WebService;

@Stateless
@WebService(
        portName = "CalculatorPort",
        serviceName = "CalculatorWsService",
        targetNamespace = "http://superbiz.org/wsdl")
public class Calculator {
    public int sum(int add1, int add2) {
        return add1 + add2;
    }

    public int multiply(int mul1, int mul2) {
        return mul1 * mul2;
    }
}

ejb-jar.xml

<ejb-jar/>

CalculatorTest

package org.superbiz.calculator;

import org.apache.commons.io.IOUtils;
import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.arquillian.test.api.ArquillianResource;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.junit.Test;
import org.junit.runner.RunWith;

import java.net.URL;

import static org.junit.Assert.assertTrue;

@RunWith(Arquillian.class)
public class CalculatorTest {

    @ArquillianResource
    private URL base;

    @Deployment(testable = false)
    public static WebArchive war() {
        return ShrinkWrap.create(WebArchive.class, "simple-webservice-without-interface.war")
                .addClass(Calculator.class);
    }

    @Test
    public void wsdlExists() throws Exception {
        final URL url = new URL(base.toExternalForm() + "webservices/Calculator?wsdl");
        assertTrue(IOUtils.readLines(url.openStream()).size() > 0);
        assertTrue(IOUtils.readLines(url.openStream()).toString().contains("CalculatorWsService"));
    }
}

arquillian.xml

<arquillian
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    >
  <container qualifier="tomee" default="true">
    <configuration>
      <property name="httpPort">-1</property>
      <property name="stopPort">-1</property>
      <property name="appWorkingDir">target/tomee-embedded</property>
    </configuration>
  </container>
</arquillian>