Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

OpenEJB ApplicationComposer and Random Port

DZone's Guide to

OpenEJB ApplicationComposer and Random Port

· Java Zone ·
Free Resource

Verify, standardize, and correct the Big 4 + more – name, email, phone and global addresses – try our Data Quality APIs now at Melissa Developer Portal!

ApplicationComposer is a great way to test a small JAXRS service but how to handle concurrent builds? how to avoid port conflicts since all builds will use the same (default) port?

An easy solution is to “affect” one port by build…but don’t ask me to maintain the range allocation ;).

OpenEJB now provides a nice solution.

As a quick reminder here is how to test a simple webservices (I suppose you have openejb-cxf-rs as test dependency):


@EnableServices("jaxrs")
public class MyTest {
    @Rule
    public final ApplicationComposerRule app = new ApplicationComposerRule(this);
 
    @Module
    @JaxrsProviders(JohnzonProvider.class) // optional
    @Classes(cdi = true, value = { MyResource.class, MyService.class })
    public WebApp webapp() {
        return new WebApp();
    }
 
    @Test
    public void theTest() throws IOException {
        // resource accesible on http://localhost:4204/openejb/
    }
}

Of course you can provide a @Configuration method and set a random port as value for the property httpejb.port but this is not as “fluent” as it should be. That’s why now you can use @RandomPort feature:

@EnableServices("jaxrs")
public class MyTest {
    @RandomPort("httpejbd")
    private URL httpEjbdPort; // http://localhost:{port}/
 
    // as before
}

@RandomPort takes the service name as parameter (if existing it will set the openejb service port otherwise name is just a key). If you inject twice the same service you’ll get the same port. Finally you can get the port injected if you type the field as an int or the root context using URL type.

Happy testing of your microservices with OpenEJB and TomEE!

Developers! Quickly and easily gain access to the tools and information you need! Explore, test and combine our data quality APIs at Melissa Developer Portal – home to tools that save time and boost revenue. Our APIs verify, standardize, and correct the Big 4 + more – name, email, phone and global addresses – to ensure accurate delivery, prevent blacklisting and identify risks in real-time.

Topics:

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}