如何让Tomcat WebApp自动部署子服务?
我使用 Hessian 编写了一个服务框架,希望保持 URL 的通用性和自动部署的灵活性。
如果我部署 Service.war,我可以使用 /Service 很好地访问它,但是,我想要所有服务的通用位置。
我怎样才能拥有一个单独的上下文,让所有服务都存在并自动部署。 就像 axis2.war 的 services 目录是如何做的一样?
例如:我部署了一个分解的 MyBridge.war,其中包含一个名为 services 的目录。 我在 MyBridge.war/WEB-INF/services 中部署 HelloWorldService.rar,然后它就被部署了。
然后我可以访问 MyBridge/HelloWorldService 吗?
这可以做到吗? 我正在尝试在不使用 spring 和 hessian 且仅使用 hessian 的情况下进行自动部署。
I've written a service framework using Hessian and want to keep URL's common but the flexability of auto-deploy.
If i deploy a Service.war I can access it fine using /Service however, I want a general spot for all services.
How could I have a seperate context where all services live and get auto-deployed. Exactly like how axis2.war does it with its services directory?
For example: I deploy an exploded MyBridge.war which contains a directory within it called services. I deploy HelloWorldService.rar within the MyBridge.war/WEB-INF/services and it gets deployed.
I can then accesss MyBridge/HelloWorldService ?
can this be done? I'm trying to do auto-deployment without using spring and hessian and just hessian.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
Axis2 通过定义一个简单的 servlet 映射来实现这一点:
这就是所需要的全部。 您还可以使用过滤器。 您的 servlet/filter 将接收对定义路径的所有请求,并将使用 WEB-INF/services 下的资源来为它们提供服务。 我相信您需要一个特殊的类加载器来加载存储在那里的类/jar 文件。
如果您想要 MyBridge/HelloWorldService 而不是 MyBridge/services/HelloWorldService,那么您需要将所有请求传递给服务 servlet/filter (/* url-pattern)。 这样您将无法拥有管理页面。
Axis2 is doing it by defining a simple servlet mapping:
This is all that is needed. You could also use a filter. Your servlet/filter will receive all requests to the defined path and will use the resources under WEB-INF/services to serve them. I believe that you would need a special class loader in order to load the classes/jar files stored there.
If you want to have MyBridge/HelloWorldService and not MyBridge/services/HelloWorldService, then you need to pass all requests to the services servlet/filter (/* url-pattern). This way you won't be able to have an administration page.