use of org.apache.openejb.RpcContainer in project tomee by apache.
the class EjbRequestHandler method doEjbHome_METHOD.
protected void doEjbHome_METHOD(final EJBRequest req, final EJBResponse res) throws Exception {
final CallContext call = CallContext.getCallContext();
final RpcContainer c = (RpcContainer) call.getBeanContext().getContainer();
final Object result = c.invoke(req.getDeploymentId(), InterfaceType.EJB_HOME, req.getInterfaceClass(), req.getMethodInstance(), req.getMethodParameters(), req.getPrimaryKey());
res.setResponse(req.getVersion(), ResponseCodes.EJB_OK, result);
}
use of org.apache.openejb.RpcContainer in project tomee by apache.
the class EjbRequestHandler method doEjbHome_CREATE.
protected void doEjbHome_CREATE(final EJBRequest req, final EJBResponse res) throws Exception {
final CallContext call = CallContext.getCallContext();
final RpcContainer c = (RpcContainer) call.getBeanContext().getContainer();
Object result = c.invoke(req.getDeploymentId(), InterfaceType.EJB_HOME, req.getInterfaceClass(), req.getMethodInstance(), req.getMethodParameters(), req.getPrimaryKey());
if (result instanceof ProxyInfo) {
final ProxyInfo info = (ProxyInfo) result;
res.setResponse(req.getVersion(), ResponseCodes.EJB_OK, info.getPrimaryKey());
} else {
result = new RemoteException("The bean is not EJB compliant. The bean should be created or and exception should be thrown.");
logger.error(req + "The bean is not EJB compliant. The bean should be created or and exception should be thrown.");
res.setResponse(req.getVersion(), ResponseCodes.EJB_SYS_EXCEPTION, new ThrowableArtifact((Throwable) result));
}
}
use of org.apache.openejb.RpcContainer in project tomee by apache.
the class EjbRequestHandler method doEjbHome_REMOVE_BY_PKEY.
protected void doEjbHome_REMOVE_BY_PKEY(final EJBRequest req, final EJBResponse res) throws Exception {
final CallContext call = CallContext.getCallContext();
final RpcContainer c = (RpcContainer) call.getBeanContext().getContainer();
c.invoke(req.getDeploymentId(), InterfaceType.EJB_HOME, req.getInterfaceClass(), req.getMethodInstance(), req.getMethodParameters(), req.getPrimaryKey());
res.setResponse(req.getVersion(), ResponseCodes.EJB_OK, null);
}
use of org.apache.openejb.RpcContainer in project tomee by apache.
the class EjbRequestHandler method doEjbObject_BUSINESS_METHOD.
protected void doEjbObject_BUSINESS_METHOD(final EJBRequest req, final EJBResponse res) throws Exception {
final CallContext call = CallContext.getCallContext();
final BeanContext beanContext = call.getBeanContext();
final boolean asynchronous = beanContext.isAsynchronous(req.getMethodInstance());
try {
if (asynchronous) {
final AtomicBoolean invocationCancelTag = new AtomicBoolean(false);
ThreadContext.initAsynchronousCancelled(invocationCancelTag);
asynchronousInvocationCancelMap.put(req.getBody().getRequestId(), invocationCancelTag);
}
final RpcContainer c = (RpcContainer) call.getBeanContext().getContainer();
// Object result = c.invoke(req.getDeploymentId(),
// req.getInterfaceClass(), req.getMethodInstance(),
// req.getMethodParameters(),
// req.getPrimaryKey()
// );
final EJBDSerializer serializer = daemon.getSerializer();
if (serializer != null) {
req.setSerializer(serializer);
}
Object result = c.invoke(req.getDeploymentId(), InterfaceType.EJB_OBJECT, req.getInterfaceClass(), req.getMethodInstance(), req.getMethodParameters(), req.getPrimaryKey());
//Pass the internal value to the remote client, as AsyncResult is not serializable
if (result != null && asynchronous) {
result = ((Future) result).get();
}
final Object realResult;
if (serializer != null && result != null) {
realResult = new SerializationWrapper(serializer.serialize(result), result.getClass().getName());
} else {
realResult = result;
}
res.setResponse(req.getVersion(), ResponseCodes.EJB_OK, realResult);
} finally {
if (asynchronous) {
ThreadContext.removeAsynchronousCancelled();
asynchronousInvocationCancelMap.remove(req.getBody().getRequestId());
}
}
}
use of org.apache.openejb.RpcContainer in project tomee by apache.
the class EjbRequestHandler method doEjbObject_REMOVE.
protected void doEjbObject_REMOVE(final EJBRequest req, final EJBResponse res) throws Exception {
final CallContext call = CallContext.getCallContext();
final RpcContainer c = (RpcContainer) call.getBeanContext().getContainer();
c.invoke(req.getDeploymentId(), InterfaceType.EJB_OBJECT, req.getInterfaceClass(), req.getMethodInstance(), req.getMethodParameters(), req.getPrimaryKey());
res.setResponse(req.getVersion(), ResponseCodes.EJB_OK, null);
}
Aggregations