Java EE应用程序服务器提供了tomcat的所有功能,那么为什么要使用tomcat(例如代替glassfish,因为它是官方的)?
特别是当需要Java EE功能(如JPA,JAX-RS,JSF)时,因此需要将更多库与应用程序打包在一起,而符合EE标准的应用程序服务器是否可以提供开箱即用的功能?
在apache camel中,哪些是将值从交换处理器传递到另一个处理器的最佳方式(以及为什么):
setProperty在构建路线时使用该方法.我创建了一个JAX-WS Web服务,在某些请求字段上使用JAXB注释使其成为必需的.
@XmlElement(required = true)
protected String number;
Run Code Online (Sandbox Code Playgroud)
由cxf-java2ws-plugin生成的WSDL是正确的,minOccurs="0"字段上没有:
<xs:element name="number" type="xs:string"/>
Run Code Online (Sandbox Code Playgroud)
但是当服务收到不遵守这些约束(缺少字段)的请求时,不会抛出SoapFault或异常.
我也试过添加@SchemaValidation到我的WS类,没有任何效果.
如何针对schmema进行请求验证(或者更确切地说,基于注释的约束验证)可以自动化?
我已经配置了一个自定义Filter,为除以下内容之外的每个URL授予spring权限/login:
public class TokenFilter implements Filter {
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
GrantedAuthority authority = new SimpleGrantedAuthority("myAuthority");
UsernamePasswordAuthenticationToken auth = new UsernamePasswordAuthenticationToken(user, token, Arrays.asList(authority));
SecurityContextHolder.getContext().setAuthentication(auth);
}
}
Run Code Online (Sandbox Code Playgroud)
以及login使用该权限保护所有请求(但/ )的spring配置:
@Configuration
@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.authorizeRequests()
.antMatchers("/login").permitAll()
.anyRequest().hasAuthority("myAuthority");
}
}
Run Code Online (Sandbox Code Playgroud)
但除了/login获取HTTP 403禁止之外的每个请求.
我已经调试并确保过滤器中的代码真正被触发.
可能是什么问题呢?
编辑 - 当将spring安全日志放入调试时,我得到以下堆栈跟踪:
2015-07-31 14:52:42 [http-nio-8002-exec-2] DEBUG …Run Code Online (Sandbox Code Playgroud) 我使用spring的PropertyPlaceHolderConfigurer如下:
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="ignoreUnresolvablePlaceholders" value="true" />
<property name="locations">
<list>
<value>classpath:default.properties</value>
<value>file:${user.home}/webextractor.properties</value>
</list>
</property>
</bean>
Run Code Online (Sandbox Code Playgroud)
尽管已经设置的ignoreUnresolvablePlaceholders属性true,我仍然获得FileNotFoundException上/home/kaykay/webextractor.properties.我知道我可以创建这个文件并将其留空,但我想知道这里有什么问题.
有没有一种简单的方法可以根据属性值在列表中查找对象,而无需在列表上循环?
例如,给出如下列表:
var lst = [
{
name: "foo",
value: "fooValue"
},
{
name: "bar",
value: "barValue"
}
];
Run Code Online (Sandbox Code Playgroud)
是否有某种" find"方法,这样lst.find("name", "foo")会返回具有" name"属性值为" foo"的对象?
我有一个名为'name'的字段的bean,以及一个使用此字段映射的inputText的JSF表单.字段的初始值很好地显示在表单上.
问题是当我提交表单时,值不会随inputText的内容更新.在下面的savePlayer()方法中,name的值始终是'name',而不是我在表单输入中输入的值.
豆子:
@Named
@RequestScoped
public class PlayerForm {
@Inject
private PlayerRepository playerRepository;
private String name = "name";
public String savePlayer(){
Player player = new Player();
player.setName(name);
playerRepository.savePlayer(player);
return "saveUserOk";
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
Run Code Online (Sandbox Code Playgroud)
表格 :
<h:form>
<h:inputText value="#{playerForm.name}" />
<h:commandButton value="Submit" action="#{playerForm.savePlayer}" />
</h:form>
Run Code Online (Sandbox Code Playgroud)
非常感谢您的帮助!
我使用以下方法从URL下载图片:
private void download(String srcUrl, String destination) throws Throwable {
File file = new File(destination);
if (!file.exists()) {
file.createNewFile();
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(file));
BufferedInputStream in = new BufferedInputStream(new URL(srcUrl).openStream());
byte bytes[] = new byte[1024];
while (0 <= in.read(bytes, 0, 1024)) {
out.write(bytes);
}
out.close();
in.close();
}
}
Run Code Online (Sandbox Code Playgroud)
在Windows上,生成的图片是原始图片的完美副本.但是在我的debian服务器上,图片被改变了:图片的右下方区域是模糊的.它发生在每张图片上,并且始终位于图片的同一区域.
非常感谢您的帮助!