我有一个OSGi包,它使用JAX-RS来处理一些REST服务.该捆绑包使用Apache CXF在Karaf中运行.我需要将基本的http身份验证应用于某些路径/方法组合.我一直在修改Spring Security,看起来新的3.1版本可以让你做到这一点,但是我在使用OSGi时遇到了很多麻烦.
就像测试一样,我创建了一个非常简单的beans.xml文件:
<beans>
<import resource="classpath:META-INF/cxf/cxf.xml"/>
<import resource="classpath:META-INF/cxf/cxf-extension-jaxrs-binding.xml"/>
<import resource="classpath:META-INF/cxf/cxf-extension-http.xml"/>
<import resource="classpath:META-INF/cxf/osgi/cxf-extension-osgi.xml"/>
<jaxrs:server id="serverTest" address="/test">
<jaxrs:serviceBeans>
<ref bean="tstSvr"/>
</jaxrs:serviceBeans>
</jaxrs:server>
<bean id="tstSvr" class="com.demo.Test"/>
<security:http auto-config="true">
<security:intercept-url pattern="/admin/**" access="ROLE_ADMIN" method="PUT" />
<security:intercept-url pattern="/**" access="ROLE_USER" />
</security:http>
<security:authentication-manager>
<security:authentication-provider>
<security:user-service>
<security:user name="user" password="pass" authorities="ROLE_USER"/>
<security:user name="admin" password="pass" authorities="ROLE_ADMIN"/>
</security:user-service>
</security:authentication-provider>
</security:authentication-manager>
</beans>
Run Code Online (Sandbox Code Playgroud)
现在,这里有趣的部分...从我一直在做的所有阅读中,我需要一个web.xml来实现这一点.比如我尝试使用的这个示例:
<web-app>
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
Run Code Online (Sandbox Code Playgroud)
使用这两个文件的组合不起作用.并且"没有用",我的意思是什么也没发生.没有错误消息,没有异常,捆绑功能就像我尝试添加spring security之前一样.我假设问题是bundle需要是一个WAR或WAB来加载web.xml.它是否正确?
更重要的是,有没有一种方法可以让没有web.xml的春天工作?
我正在假设我需要将捆绑包作为一个捆绑包供CXF加载它,所以我无法将其转换为WAR或WAB,但我并不完全确定是这种情况.
感谢您的任何帮助,您可以提供!
更新:
在做了一堆额外的谷歌搜索后,我发现了一个论坛帖子,提到添加Web-FilterMappings: springSecurityFilterChain;url-patterns:="/*"到您的清单而不是使用web.xml.但是,您仍然需要使用WAB而不是普通的捆绑包.我已将该行添加到我的清单中以防万一,但它没有任何效果.我的问题似乎转变为:如何在CXF中使用WAB?
更新2: 因为这个问题不够长......我决定尝试使用Spring …
我开发的产品由许多捆绑包组成,这些捆绑包作为karaf顶部的功能运行.通常,我们的开发人员一次只能处理一个捆绑包.我们的正常开发类似于:代码,编译,复制捆绑到部署文件夹,测试.我们还发现hotdeploy只是拒绝覆盖作为功能安装的某些bundle而不重启服务器或卸载/重新安装功能,因此有时循环时间更长.
我的问题是:社区中的任何人都有更好的方法吗?我们做事的方式很有效,但我觉得它很慢而且效率低下,而且我认为有人会想出更好的东西!
编辑:我意识到在我的问题中我很不清楚...我们在Karaf下使用Equinox.我们也使用Eclipse和Maven,虽然我不知道使用Maven是相关的.
更一般地说,你如何重新命名狮身人面像默认元素(例如Quick Search到Search)?你能?
我正在Matrix2D上课.一开始我使用构造函数作为folows,
我的代码:
Matrix2D(float a,float b, float c,float d)
{
a_=a;
....
}
Run Code Online (Sandbox Code Playgroud)
但是,我刚刚意识到,如果我可以使用多维,那将会好很多array [2][2].这就是问题所在,如何为数组编写构造函数?
class Matrix
{
float matrix[2][2];
public:
Matrix2D(float a,float b,float c, float d)
{
matrix[2][2]={a,b,c,d} // not valid
}
}
Run Code Online (Sandbox Code Playgroud)
只是为了让您知道,我不要求提供完整的代码.我只需要有人让我走上正轨.
鉴于一堆人(类似于):
[p1,p2,p3]
[p2,p3]
[p1]
[p1]
Run Code Online (Sandbox Code Playgroud)
从每组中选择1,尝试最小化选择任何一个人的最大次数.
对于上面的集合,必须选择给定人员的最大次数是2.
我很难为此获得算法.我不认为可以用贪婪的算法来完成,更多地考虑动态编程解决方案.
关于如何解决这个问题的任何提示?或者你们是否知道任何有关这些东西的好网站我可以看看?
我有这个Java程序,但我的测试给了我这样的信息:
testEmployeeTostring:未通过testEmployeeTostring <[id [= 1013,name = Jubal Early,job =]采购]>但是:<[id [= 1013,name = Jubal Early,job =]采购]>
我不得不使用@Override,我认为这是问题所在.我希望有人可以解决这个问题:
public class Employee {
int id;
String name;
JobType job;
public Employee(int id, String name, JobType job)
{
this.id = id;
this.name = name;
this.job = job;
}
@Override public String toString()
{
return ("["+ "id =" + id + ", name = " + name + ", job = " + job + "]");
}
}
Run Code Online (Sandbox Code Playgroud) 我需要创建这个框架:

我应该使用哪种布局?我正在考虑框或网格布局,但右边的菜单将是一个问题.
我只是阅读了文档,并且在特定的页面上,但我无法找到一个可以使用此示例的示例(例如,此功能在分析中的用例),请您帮我解决这个麻烦事吗?
string TempFileLocation="Filelocation";
string tempfilename ="FileName";
string TabName ="TabName";
string xConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" +TempFileLocation+ tempfilename +".xls;Extended Properties='Excel 8.0;HDR=YES'";
var conn = new OleDbConnection(xConnStr);
string ColumnName ="[columename] varchar(255)"
conn.Open();
var cmd = new OleDbCommand("CREATE TABLE [" + TabName + "] (" + ColumnName + ")", conn);
cmd.ExecuteNonQuery();
conn.Close();
Run Code Online (Sandbox Code Playgroud)
我使用上面的代码来创建表,但它不允许我创建超过64个字符的ColumnName.请给我这个问题的解决方案.
我正在尝试解析一个充满.htm文件的文件夹.所有这些文件都包含需要删除的1个特定元素.这是一个td元素class="hide".到目前为止,这是我的代码.
$dir. entry是文件的完整路径.
$page = ($dir . $entry);
$this->domDoc->loadHTMLFile($page);
// Use xpath query to find the menu and remove it
$nodeList = $xpath->query('//td[@class="hide"]');
Run Code Online (Sandbox Code Playgroud)
不幸的是,这是事情已经出错的地方.如果我执行var_dump节点列表,我会得到以下内容:
object(DOMNodeList)#5 (0) { }
Run Code Online (Sandbox Code Playgroud)
只是让大家知道我想要选择的内容,这里有一段摘录:
<td width="160" align="left" valign="top" class="hide">
lots of other TD's and content here
</td>
Run Code Online (Sandbox Code Playgroud)
到目前为止,有没有人看到我提出的问题?