我在CXF中使用带注释的方法通过Web服务调用创建不同的功能。出于某种原因,我的所有网址都来自{hostname}/services/status/{my_path}
。我正在使用这样的注释方法:
@Path("/{type:(?i)index}")
public IndexServiceResource getIndexServiceResource() {
return new IndexServiceResource(this.handlers);
}
我希望@Path
直接离开{hostname}
而不是{hostname}/services/status
。这会在哪里设定?
答案 0 :(得分:2)
您可以将处理cxf web-services的CXFServlet“/ services”绑定到web.xml中的主上下文“/”。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>cxf</display-name>
<description>cxf</description>
<servlet>
<servlet-name>cxf</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>cxf</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
</web-app>
尝试将url-pattern从“/ services / *”更改为“/*”。
但是我不确定是否有办法改变“/ status”也可以绑定到主要上下文“/*”。
当然,如果您的请求通过Apache代理,那么可以设置映射,例如“http://my.domain” - &gt; “http://internal.server/services/status”。但这是在您的代码之外完成的。
答案 1 :(得分:0)
我认为由于您的Jaxrs服务器配置需要“状态”(我不确定)。请检查上下文文件中的jaxrs服务器配置。
<jaxrs:server id="restContainer" address="/">
<jaxrs:serviceBeans>
地址属性是否包含状态?