[jboss-user] [JBossWS] - Programmatic service deployment, again!
Doug.Palmer
do-not-reply at jboss.com
Thu Aug 17 09:02:58 EDT 2006
Hi
I'm still trying to add aliases for a web service at runtime. I have managed to persuade JBossWS to deploy my service endpoint but my service doesn't get registered with tomcat and requests to the context root return a 404 error. I guess I have missed a step in the deployment; can anyone tell me what I am missing? Here is the code I have so far:
| String targetNS = "http://services/jaws";
| String serviceName = "aService";
| String portName = "aServicePort";
| String operationName = "anOperation";
|
| String javaClassName = this.getClass().getName();
| String javaMethodName = "method";
| String contextRoot = "contextRoot";
| String endpoint = "http://localhost:8080/"+contextRoot+"/"+serviceName;
|
| UnifiedDeploymentInfo udi = new JSR181Deployment(UnifiedDeploymentInfo.Type.JSR181_JSE);
| URLClassLoader ctxLoader = (URLClassLoader)Thread.currentThread().getContextClassLoader();
| udi.localCl = ctxLoader;
| udi.ucl = ctxLoader.getParent();
| udi.annotationsCl = ctxLoader.getParent();
|
| UnifiedMetaData wsMetaData = new UnifiedMetaData();
| wsMetaData.setClassLoader(udi.ucl);
| ServiceMetaData serviceMetaData = new ServiceMetaData(wsMetaData, new QName(targetNS, serviceName));
| wsMetaData.addService(serviceMetaData);
|
| ServerEndpointMetaData sepMetaData = new ServerEndpointMetaData(serviceMetaData, new QName(targetNS, portName));
| sepMetaData.setServiceEndpointImplName(javaClassName);
| sepMetaData.setStyle(Style.RPC);
| sepMetaData.setEncodingStyle(Use.LITERAL);
| sepMetaData.setParameterStyle(ParameterStyle.BARE);
| sepMetaData.setServiceEndpointID(ObjectNameFactory.create("jboss.ws:context="+contextRoot+",endpoint="+serviceName));
| sepMetaData.setEndpointAddress(endpoint);
| sepMetaData.setContextRoot(contextRoot);
| serviceMetaData.addEndpoint(sepMetaData);
|
| OperationMetaData opMetaData = new OperationMetaData(sepMetaData, new QName(targetNS, operationName), javaMethodName);
| opMetaData.setOneWayOperation(false);
| sepMetaData.addOperation(opMetaData);
|
| ServiceEndpointInfo seInfo = new ServiceEndpointInfo(udi, sepMetaData);
| ServiceEndpointManagerFactory semFactory = ServiceEndpointManagerFactory.getInstance();
| ServiceEndpointManager epManager = semFactory.getServiceEndpointManager();
| epManager.createServiceEndpoint(seInfo);
|
| ObjectName sepID = sepMetaData.getServiceEndpointID();
| epManager.startServiceEndpoint(sepID);
|
Thanks in advance
Doug
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3965728#3965728
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3965728
More information about the jboss-user
mailing list