Search in sources :

Example 1 with Hessian

use of org.apache.openejb.cdi.api.Hessian in project tomee by apache.

the class HessianExtension method findHessianWebServices.

protected <X> void findHessianWebServices(@Observes final ProcessBean<X> processBean) {
    if (ProcessSessionBean.class.isInstance(processBean)) {
        return;
    }
    final Bean<X> bean = processBean.getBean();
    final Class<?> beanClass = bean.getBeanClass();
    for (final Class<?> itf : beanClass.getInterfaces()) {
        final Hessian hessian = itf.getAnnotation(Hessian.class);
        final String key = "openejb.hessian." + beanClass.getName() + "_" + itf.getName() + ".path";
        final String path = appInfo.properties.getProperty(key, SystemInstance.get().getProperty(key));
        if (hessian != null || path != null) {
            toDeploy.add(new Deployment(itf, path, bean));
        }
    }
}
Also used : Hessian(org.apache.openejb.cdi.api.Hessian)

Example 2 with Hessian

use of org.apache.openejb.cdi.api.Hessian in project tomee by apache.

the class HessianExtension method deploy.

protected void deploy(@Observes final AfterDeploymentValidation afterDeploymentValidation, final BeanManager bm) {
    final HessianService service = SystemInstance.get().getComponent(HessianService.class);
    if (service == null) {
        LOGGER.severe("HessianService not yet started, no hessian CDI webservices will be deployed");
        return;
    }
    final HessianRegistry registry = service.getRegistry();
    final String appName = findAppName();
    for (final Deployment deployment : toDeploy) {
        final Hessian hessian = deployment.itf.getAnnotation(Hessian.class);
        final HessianServer server;
        try {
            server = new HessianServer(deployment.bean.getBeanClass().getClassLoader());
        } catch (final HessianServer.HessianIsMissingException e) {
            LOGGER.info("Hessian is not available so openejb-hessian will not deploy any service");
            break;
        }
        try {
            if (hessian != null && hessian.serializerFactory() != Object.class && !hessian.serializerFactory().isInstance(server.getSerializerFactory())) {
                server.serializerFactory(hessian.serializerFactory().newInstance());
            }
        } catch (final Exception e) {
            throw new OpenEJBRuntimeException(e);
        }
        if (hessian != null) {
            server.sendCollectionType(hessian.sendCollectionType());
        }
        if (Dependent.class.equals(deployment.bean.getScope())) {
            LOGGER.warning("@Dependent can lead to memory leaks ATM");
        }
        server.createSkeleton(bm.getReference(deployment.bean, deployment.itf, null), deployment.itf);
        final String name = getName(deployment.path, deployment.itf);
        try {
            LOGGER.info("Hessian(url=" + registry.deploy(deployment.itf.getClassLoader(), server, service.getVirtualHost(), appName, service.getAuthMethod(), service.getTransportGuarantee(), service.getRealmName(), name) + ", interface=" + name + ")");
            deployed.add(new DeployedEndpoint(appName, name));
        } catch (final URISyntaxException e) {
            throw new OpenEJBRuntimeException(e);
        }
    }
    toDeploy.clear();
}
Also used : OpenEJBRuntimeException(org.apache.openejb.OpenEJBRuntimeException) HessianRegistry(org.apache.openejb.server.hessian.HessianRegistry) HessianService(org.apache.openejb.server.hessian.HessianService) URISyntaxException(java.net.URISyntaxException) Hessian(org.apache.openejb.cdi.api.Hessian) HessianServer(org.apache.openejb.server.hessian.HessianServer) URISyntaxException(java.net.URISyntaxException) OpenEJBRuntimeException(org.apache.openejb.OpenEJBRuntimeException)

Aggregations

Hessian (org.apache.openejb.cdi.api.Hessian)2 URISyntaxException (java.net.URISyntaxException)1 OpenEJBRuntimeException (org.apache.openejb.OpenEJBRuntimeException)1 HessianRegistry (org.apache.openejb.server.hessian.HessianRegistry)1 HessianServer (org.apache.openejb.server.hessian.HessianServer)1 HessianService (org.apache.openejb.server.hessian.HessianService)1