在带有REST服务的wildfly 8.1中,我想实现CORS ContainerRequestFilter和ContainerResponseFilter.
我的请求过滤器工作正常但ContainerResponseFilter
从未加载或调用
package org.test.rest;
import java.io.IOException;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerResponseContext;
import javax.ws.rs.container.ContainerResponseFilter;
import javax.ws.rs.container.PreMatching;
import javax.ws.rs.ext.Provider;
@Provider
@PreMatching // <-- EDIT : This was my mistake ! DO NOT ADD THIS
public class CorsResponseFilter implements ContainerResponseFilter {
public CorsResponseFilter() {
System.out.println("CorsResponseFilter.init");
}
@Override
public void filter(ContainerRequestContext req,
ContainerResponseContext resp) throws IOException {
System.out.println("CorsResponseFilter.filter");
resp.getHeaders().add("Access-Control-Allow-Origin", "*");
resp.getHeaders().add("Access-Control-Allow-Credentials", "true");
resp.getHeaders().add("Access-Control-Allow-Methods",
"GET, POST, DELETE, PUT");
resp.getHeaders().add("Access-Control-Allow-Headers",
"Content-Type, Accept");
}
}
Run Code Online (Sandbox Code Playgroud)
这在我看来是一个Wildfly/resteasy bug.你有另一个想法/我错过了什么吗?
应用程序配置在哪里属于现代Java EE应用程序?人们有什么最佳实践建议?
通过应用程序配置,我的意思是设置连接设置到其他盒子上的服务,包括外部服务(例如Twitter和我们的内部Cassandra服务器......用于诸如主机名,凭证,重试尝试之类的东西)以及与业务逻辑相关的东西(事物)一个人可能会被诱惑作为常量存储在类中,例如某些东西过期等等.
假设:
配置是属于EAR的内部还是外部?
如果在 EAR 之外,哪里以及如何最好地可靠地访问它们?
如果在 EAR 内部,我们可以将它存储在类路径中的任何位置,以便在执行期间轻松访问.但是我们必须在每次配置更改时重新组装(并且可能重新构建).由于我们将拥有多个环境,因此我们需要一种方法来区分EAR中的文件.我在这里看到两个选项:
cassandra.properties
),然后构建多个环境特定的EAR(例如appxyz-PROD.ear
).appxyz.ear
)并将所有各种环境配置文件放入其中,将环境变量附加到每个配置文件名(例如cassandra-PROD.properties
).当然还要添加一个环境变量(对于vm或其他),以便代码知道要拾取哪个文件.人们可以推荐哪些最佳实践来解决这一共同挑战?
谢谢.
我在Windows 8.1上使用JDK 1.8u25尝试新版本的WildFly:8.2.0(我使用的是8.1.0)
所以我安装了wildfly,添加用户,将WildFly添加到NetBeans,转到管理控制台(在Firefox 34上),在运行时添加jdbc驱动程序,然后单击Configuration来设置数据源,但是有一个弹出窗口说"丢失了与服务器的连接",我重新开始,但问题仍然存在,我重新安装,问题仍然存在
每次我点击配置我都有弹出窗口:"丢失与服务器的连接"
使用Wildfly 8.2.0.Final,Windows 7,JBoss Developer Studio 8.0.2.GA.
我们正在努力将战争分解为模块.似乎最自然的方法是依靠web片段+ JSF/Facelet能力在war/WEB-INF/lib jar中查找资源.
问题是对xhtml facelet模板和静态资源的更改不会动态应用,因为如果战争本身中存在相同的内容,就会发生这种情况.
据我所知,这是因为:
org.wildfly.extension.undertow.deployment.WarStructureDeploymentProcessor
代码似乎总是制作一个jar副本.问题.
我们使用Wildfly 8.2.0.Final,Maven 2.2.1,Seam 2.2.0.GA和Weld 2.2.6.Final.
我们有一个带有传统WAR,新WAR和一堆其他模块的EAR文件.传统的WAR依赖于Seam,但新的WAR和EAR中的其他模块依赖于Weld.
目前,只有传统的WAR正在运行,因为我们将Weld子系统排除在外,jboss-deployment-structure.xml
直到我们能够以某种方式将Seam隔离到传统WAR.我们尝试从EAR中删除Seam并将其作为旧版WAR的依赖项向上移动,但这不起作用.要使用EJB,它似乎需要是EAR的依赖项,并ejbModule
在maven-ear-plugin配置中定义为.
关于我们如何设置它的任何想法?
我正在尝试在Wildfly(版本8.2)中为我的cookie添加安全标志.在servlet容器设置的文档页面中,您会发现"servlet-container"的子代是:
但是我只有jsp和websockets.如何访问会话cookie设置?如果我不能,如何将安全标志添加到我的cookie中?
更新:我无法访问战争中的web.xml文件,只能访问wildfly配置文件.
我已经升级到WildFly 8.2.0
从JBoss 7
和Java 8
从Java 7
.
我每次都停止server
在Eclipse
这个警告中得到:
Java HotSpot(TM)64位服务器VM警告:忽略选项MaxPermSize = 256m; 支持在8.0中删除
如果我从CMD
这里开始和停止服务器就没有这样的警告,就在这里Eclipse
.我已从中删除了所有MaxPermSize设置WildFly
,但在我的项目中找不到任何有关该设置的设置.它恰好发生在Eclipse
.
我已经检查了这个问题:
哪里可以找到Eclipse-WildFly系统中的所有MaxPermSize?
Java HotSpot(TM)64位服务器VM警告:忽略选项MaxPermSize
使用IntelliJ或Play时,如何使"Java Hot Spot MaxPermSize"警告消失?
和这个页面
我正在尝试用简单的restEasy 3.0.10应用程序设置新的Wildfly 8.2服务器时弄清楚我的问题.
我的网络应用程序非常容易.
src/main/
java/my-package/
RootApplication.java
HomePageResource.java
webapp/
index.html
WEB-INF/
beans.xml
web.xml
Run Code Online (Sandbox Code Playgroud)
web.xml和beans.xml看起来像这样
---- web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
metadata-complete="false">
</web-app>
---- beans.xml
<beans xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
</beans>
Run Code Online (Sandbox Code Playgroud)
在RootApplication.java我有
@ApplicationPath("/app")
public class RootApplication extends Application
{
private Set<Object> singletons = new HashSet<>();
public RootApplication()
{
singletons.add(new HomePageResource());
}
@Override
public Set<Object> getSingletons()
{
return singletons;
}
}
// ResourceProvider is a simple class hiding getResource and createStreamer
@Path("/")
public class HomePageResource extends …
Run Code Online (Sandbox Code Playgroud) 我有一个包含多个模块的父聚合器 POM。我build/pluginManagement
在父模块中有一个,因为每个子模块的插件执行都是相同的。
如果我在每个子模块(mvn package
)中执行它就可以正常工作。如果我在父模块中执行:mvn package -Pmytest
,我想跳过父模块中的插件执行,所以我添加了:
<plugin>
<groupId>org.wildfly.plugins</groupId>
<artifactId>wildfly-maven-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
但是,它不起作用。
父pom.xml:
<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.xyz.jboss.config</groupId>
<artifactId>jboss-config</artifactId>
<packaging>pom</packaging>
<version>1.2-SNAPSHOT</version>
<name>jboss-config</name>
<url>http://maven.apache.org</url>
<profiles>
<profile>
<id>mytest</id>
<modules>
<module>jboss-system-properties</module>
<module>jboss-security</module>
</modules>
</profile>
</profiles>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>process-package</id>
<phase>package</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/processed/scripts</outputDirectory>
<resources>
<resource>
<directory>${basedir}/src/main/resources/scripts</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
<execution>
<id>process-clean</id>
<phase>clean</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/processed/scripts</outputDirectory>
<resources>
<resource>
<directory>${basedir}/src/main/resources/scripts</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration> …
Run Code Online (Sandbox Code Playgroud)