use of org.apache.axis.description.JavaServiceDesc in project tomee by apache.
the class JavaServiceDescBuilder method createServiceDesc.
public JavaServiceDesc createServiceDesc() throws OpenEJBException {
Class serviceEndpointInterface;
try {
serviceEndpointInterface = classLoader.loadClass(serviceInfo.serviceEndpointInterface);
} catch (ClassNotFoundException e) {
throw new OpenEJBException("Unable to load the service endpoint interface " + serviceInfo.serviceEndpointInterface, e);
}
JavaServiceDesc serviceDesc = new JavaServiceDesc();
serviceDesc.setName(serviceInfo.name);
serviceDesc.setEndpointURL(serviceInfo.endpointURL);
serviceDesc.setWSDLFile(serviceInfo.wsdlFile);
BindingStyle bindingStyle = serviceInfo.defaultBindingStyle;
switch(bindingStyle) {
case RPC_ENCODED:
serviceDesc.setStyle(Style.RPC);
serviceDesc.setUse(Use.ENCODED);
break;
case RPC_LITERAL:
serviceDesc.setStyle(Style.RPC);
serviceDesc.setUse(Use.LITERAL);
break;
case DOCUMENT_ENCODED:
serviceDesc.setStyle(Style.DOCUMENT);
serviceDesc.setUse(Use.ENCODED);
break;
case DOCUMENT_LITERAL:
serviceDesc.setStyle(Style.DOCUMENT);
serviceDesc.setUse(Use.LITERAL);
break;
case DOCUMENT_LITERAL_WRAPPED:
serviceDesc.setStyle(Style.WRAPPED);
serviceDesc.setUse(Use.LITERAL);
break;
}
// Operations
for (JaxRpcOperationInfo operationInfo : serviceInfo.operations) {
OperationDesc operationDesc = buildOperationDesc(operationInfo, serviceEndpointInterface);
serviceDesc.addOperationDesc(operationDesc);
}
// Type mapping registry
TypeMappingRegistryImpl typeMappingRegistry = new TypeMappingRegistryImpl();
typeMappingRegistry.doRegisterFromVersion("1.3");
serviceDesc.setTypeMappingRegistry(typeMappingRegistry);
// Type mapping
TypeMapping typeMapping = typeMappingRegistry.getOrMakeTypeMapping(serviceDesc.getUse().getEncoding());
serviceDesc.setTypeMapping(typeMapping);
// Types
for (JaxRpcTypeInfo type : serviceInfo.types) {
registerType(type, typeMapping);
}
return new ReadOnlyServiceDesc(serviceDesc);
}
use of org.apache.axis.description.JavaServiceDesc in project tomee by apache.
the class AxisWsContainerTest method testInvokeSOAP.
public void testInvokeSOAP() throws Exception {
ClassLoader cl = Thread.currentThread().getContextClassLoader();
JavaServiceDesc serviceDesc = new JavaServiceDesc();
serviceDesc.setEndpointURL("http://127.0.0.1:8080/axis/services/echo");
// serviceDesc.setWSDLFile(portInfo.getWsdlURL().toExternalForm());
serviceDesc.setStyle(Style.RPC);
serviceDesc.setUse(Use.ENCODED);
TypeMappingRegistryImpl tmr = new TypeMappingRegistryImpl();
tmr.doRegisterFromVersion("1.3");
TypeMapping typeMapping = tmr.getOrMakeTypeMapping(serviceDesc.getUse().getEncoding());
serviceDesc.setTypeMappingRegistry(tmr);
serviceDesc.setTypeMapping(typeMapping);
OperationDesc op = new OperationDesc();
op.setName("echoString");
op.setStyle(Style.RPC);
op.setUse(Use.ENCODED);
Class beanClass = EchoBean.class;
op.setMethod(beanClass.getMethod("echoString", String.class));
ParameterDesc parameter = new ParameterDesc(new QName("http://ws.apache.org/echosample", "in0"), ParameterDesc.IN, typeMapping.getTypeQName(String.class), String.class, false, false);
op.addParameter(parameter);
serviceDesc.addOperationDesc(op);
serviceDesc.getOperations();
ReadOnlyServiceDesc sd = new ReadOnlyServiceDesc(serviceDesc);
Class pojoClass = cl.loadClass("org.apache.openejb.server.axis.EchoBean");
RPCProvider provider = new PojoProvider();
SOAPService service = new SOAPService(null, provider, null);
service.setServiceDescription(sd);
service.setOption("className", "org.apache.openejb.server.axis.EchoBean");
URL wsdlURL = new URL("http://fake/echo.wsdl");
URI location = new URI(serviceDesc.getEndpointURL());
Map wsdlMap = new HashMap();
AxisWsContainer container = new AxisWsContainer(wsdlURL, service, wsdlMap, cl);
InputStream in = cl.getResourceAsStream("echoString-req.txt");
try {
AxisRequest req = new AxisRequest(504, "text/xml; charset=utf-8", new ServletIntputStreamAdapter(in), HttpRequest.Method.GET, new HashMap<String, String>(), location, new HashMap<String, String>(), "127.0.0.1");
ByteArrayOutputStream out = new ByteArrayOutputStream();
AxisResponse res = new AxisResponse("text/xml; charset=utf-8", "127.0.0.1", null, null, 8080, new ServletOutputStreamAdapter(out));
req.setAttribute(WsConstants.POJO_INSTANCE, pojoClass.newInstance());
container.onMessage(req, res);
out.flush();
// log.debug(new String(out.toByteArray()));
} finally {
if (in != null) {
try {
in.close();
} catch (IOException ignore) {
// ignore
}
}
}
}
use of org.apache.axis.description.JavaServiceDesc in project tomee by apache.
the class AxisService method createPojoWsContainer.
protected HttpListener createPojoWsContainer(ClassLoader loader, URL moduleBaseUrl, PortData port, String serviceId, Class target, Context context, String contextRoot, Map<String, Object> bdgs, ServiceConfiguration serviceInfos) throws Exception {
ClassLoader classLoader = target.getClassLoader();
// todo build JaxRpcServiceInfo in assembler
JaxRpcServiceInfo serviceInfo = getJaxRpcServiceInfo(classLoader);
// Build java service descriptor
JavaServiceDescBuilder javaServiceDescBuilder = new JavaServiceDescBuilder(serviceInfo, classLoader);
JavaServiceDesc serviceDesc = javaServiceDescBuilder.createServiceDesc();
// Create service
RPCProvider provider = new PojoProvider();
SOAPService service = new SOAPService(null, provider, null);
service.setServiceDescription(serviceDesc);
// Set class name
service.setOption("className", target.getName());
// Add Handler Chain
List<HandlerInfo> handlerInfos = createHandlerInfos(port.getHandlerChains());
HandlerInfoChainFactory handlerInfoChainFactory = new HandlerInfoChainFactory(handlerInfos);
service.setOption(org.apache.axis.Constants.ATTR_HANDLERINFOCHAIN, handlerInfoChainFactory);
// Create container
AxisWsContainer container = new AxisWsContainer(port.getWsdlUrl(), service, null, classLoader);
wsContainers.put(serviceId, container);
return container;
}
use of org.apache.axis.description.JavaServiceDesc in project tomee by apache.
the class AxisService method createEjbWsContainer.
@Override
protected HttpListener createEjbWsContainer(URL url, PortData port, BeanContext beanContext, ServiceConfiguration serviceInfos) throws Exception {
ClassLoader classLoader = beanContext.getClassLoader();
// todo build JaxRpcServiceInfo in assembler
JaxRpcServiceInfo serviceInfo = getJaxRpcServiceInfo(classLoader);
// Build java service descriptor
JavaServiceDescBuilder javaServiceDescBuilder = new JavaServiceDescBuilder(serviceInfo, classLoader);
JavaServiceDesc serviceDesc = javaServiceDescBuilder.createServiceDesc();
// Create service
RPCProvider provider = new EjbRpcProvider(beanContext, createHandlerInfos(port.getHandlerChains()));
SOAPService service = new SOAPService(null, provider, null);
service.setServiceDescription(serviceDesc);
// Set class name
service.setOption("className", beanContext.getServiceEndpointInterface().getName());
serviceDesc.setImplClass(beanContext.getServiceEndpointInterface());
// Create container
AxisWsContainer container = new AxisWsContainer(port.getWsdlUrl(), service, null, classLoader);
wsContainers.put(beanContext.getDeploymentID().toString(), container);
return container;
}
Aggregations