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));
}
}
}
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();
}
Aggregations