我下载了JBoss Application Server 5并成功部署了war文件.我将Hello.war复制到了一个简单的index.jsp文件中
\jboss-5.1.0.GA-jdk6\jboss-5.1.0.GA\server\default\deploy
Run Code Online (Sandbox Code Playgroud)
它工作得很好.
但是,当我使用JBoss AS 7并在此部署war文件时,它没有被执行.
jboss-as-7.0.0.Final\jboss-as-7.0.0.Final\standalone\deployments
Run Code Online (Sandbox Code Playgroud)
如何部署呢?
编辑:我搜索了它,但无法找到信息,因为JBoss AS 7相对较新.
如何在JBoss 7.1中使用log4j?
我的WebContent/WEB-INF/lib文件夹中有一个log4j-1.2.16.jar.当我输出Logger.getRootLogger().getClass().toString()
我得到的结果class org.jboss.logmanager.log4j.BridgeLogger
是错误的.
如果我添加Dependencies: org.apache.commons.logging
到我的MANIFEST.MF文件,我得到相同的结果.
这导致我的log4j.properties文件(我创建了unter WEB-INF/classes)被忽略的问题.
我目前正在研究在JBoss AS 7上运行的项目,该项目需要来自各种来源的身份验证.我试图了解组合提供身份验证的各种组件.
关于这一切如何融合,我有一些假设/猜测,但我需要确保我的理解是正确的.以下是我所理解的JBoss AS7的身份验证过程.
您有一个安全领域,用于定义用户的身份验证方式.然后,这个领域会暴露给您的应用程序,以保护其中的部分或全部内容.在AS7中,这是在<subsystem xmlns ="urn:jboss:domain:security:1.0">元素中配置的.
可以将域配置为使用登录模块(例如数据库,LDAP,本地文件或其他内容)针对各种源对用户进行身份验证.可以定义多个登录模块,您可以指定登录模块的某些组合必须"成功"才能进行身份验证.
实际的用户名和密码通过web.xml文件(对于servlet)中定义的机制传递,该机制在<login-config>元素中定义.
假设上述过程是正确的(可能不是):
我们正在从JBoss 6升级到JBoss 7.我们的应用程序的性质是每个客户都有一个单独的数据库实例,以及所有客户共有的核心配置数据库.我们经常使用EJB代码,它至少会在一次调用中引用核心数据库和单个客户的数据,甚至是一些通过所有客户的一般后台流程.
在JBoss 6中,通过使用NOT_SUPPORTED事务属性设置方法,可以毫无问题地处理这个问题.但是,JBoss 7抱怨这个有以下错误:
ARJUNA012140:不允许添加多个最后资源.尝试添加LastResourceRecord(XAOnePhaseResource(LocalXAResourceImpl @ 74bec54d [connectionListener = d3ce980的ConnectionManager = 25b47a05警告=假currentXid = <formatId = 131077,gtrid_length = 29,bqual_length = 36,tx_uid = 0:ffff0a2c28d1:-5a4c1f9a:504689c9:11,节点名称= 1,branch_uid = 0:ffff0a2c28d1:-5a4c1f9a:504689c9:14,subordinatenodename = null,eis_name = unknown eis name>])),但已经有LastResourceRecord(XAOnePhaseResource(LocalXAResourceImpl @ 518d0191 [connectionListener = 1a05d94a connectionManager = 135f1cfe warned = false currentXid = <formatId = 131077,gtrid_length = 29,bqual_length = 36,tx_uid = 0:ffff0a2c28d1:-5a4c1f9a:504689c9:11,node_name = 1,branch_uid = 0:ffff0a2c28d1:-5a4c1f9a:504689c9:13,subordinatenodename = null,eis_name =未知的eis名称>]))
如果不在单独的EJB调用和事务中包装对不同数据库的每次调用,我们如何解决此问题.有没有办法在EJB调用或类似的东西中实际关闭JBoss事务管理?
注意:此问题在基于额外发现的赏金开始后被修改,以突出对特定问题的关注并删除被排除的其他可能性.
我们目前正在将一些项目从JBoss 4.x移植到JBoss 7.到目前为止,除了我们通常用于提供简单管理操作的MBean之外,一切似乎都运行正常.
我一直在寻找相当长的一段时间,但要么我无法提出正确的搜索术语,要么我缺少一些知识来弥补JBoss 4.x和JBoss 7中的MBean定义之间的差距.
因此,希望有人可以提供我可能缺少的内容或我必须阅读的内容(可能是一些文档,示例等)的提示
在Jboss 4.x中,我们的MBean通常如下所示:
@Service( objectName = "Domain:Name=SomeMBean",
xmbean="resource:<path-to-xmbean.xml>")
class SomeMBean
{
@EJB
private SomeService someService;
public String someOperation()
{
someService.doSomething();
return "success";
}
}
Run Code Online (Sandbox Code Playgroud)
我们使用@Service
注释来定义对象名称和xmbean描述符,JBoss会自动注册那些mbeans.
显然,在JBoss 7中,@Service
注释不再存在,因此需要另一种方法.
到目前为止,我设法用平台mbean服务器手动注册MBean,但我更喜欢JBoss自动执行此操作.另外,到目前为止,我还没有设法提供方法/参数的描述(尽管这些功能更加出色).
为了清楚起见,我会重复这个问题:
如何在JBoss 7(Java EE 6)中定义提供以下功能的MBean?
更新
这是我到目前为止所得到的:
首先,我发现了这个投影,它使用CDI来包装相应注释的任何bean的注入目标,并在postConstruct()
方法中进行JMX注册:http://code.google.com/p/jmx-annotations/.此外,扫描找到的MBean以获取类/属性/方法/参数注释,这些注释提供注释属性的描述.
但是,postConstruct()
似乎没有为EJB调用该方法(我假设这是为了不与EJB容器冲突).因此MBean现在不应该是EJB而是普通的CDI bean.
因此,具有MBean不会自动实例化的缺点.为了解决这个问题,有一个单例bean在启动时循环遍历所有bean,BeanManager
并创建每个找到的MBean的实例.由于MBean仍然具有其注入目标,postConstruct()
因此不会调用其方法,并且将在MBean服务器中注册该bean.
以下是启动过程的概述:
postConstruct()
将调用MBean的注入目标的方法,因此MBean在MBean服务器中注册此方法的一个缺点是在执行MBean方法时缺少事务上下文(任何EJB调用都将在事务上下文中运行).但是,如果需要,可以使用CDI拦截器修复这个问题,该拦截器将提供事务上下文.Seam项目似乎有适当的拦截器.
我仍然不确定这是否是一种理智和稳定的方法,因此任何建设性的评论,提示等都非常受欢迎.
使用RestEasy JSON Provider Jettison(Badgerfish映射)与杰克逊之间的基本区别是什么?
使用这个的优点和缺点是什么?
好的,这让我发疯了.特别是因为那里已经有很多类似的问题了.但没有答案对我有用.
我的Windows 7机器上有jboss 7.1.1(通常从eclipse运行)并且想要使用mysql.
我做了以下事情:
1创建目录 jboss-as-7.1.1.Final\modules\com\mysql\main
2文件那里:module.xml
和mysql-connector-java-5.1.26-bin.jar
(从官方mysql网站下载)
3内容module.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<modulexmlns="urn:jboss:module:1.0" name="com.mysql">
<resourxces>
<resource-rootpath="mysql-connector-java-5.1.26-bin.jar"/>
</resources>
<dependencies>
<modulename="javax.api"/>
</dependencies>
</module>
Run Code Online (Sandbox Code Playgroud)
4相关部分来自jboss-as-7.1.1.Final\standalone\configuration\standalone.xml
:
<datasource jndi-name="java:jboss/datasources/mysqlDS" pool-name="mysqlDS" enabled="true" jta="true" use-ccm="true" use-java-context="true">
<connection-url>jdbc:mysql://192.168.1.1:3306/eAuftrag</connection-url>
<driver>com.mysql</driver>
<security>
<user-name>root</user-name>
<password>fffff</password>
</security>
<timeout>
<idle-timeout-minutes>0</idle-timeout-minutes>
<query-timeout>600</query-timeout>
</timeout>
<statement>
<prepared-statement-cache-size>100</prepared-statement-cache-size>
<share-prepared-statements>true</share-prepared-statements>
</statement>
</datasource>
Run Code Online (Sandbox Code Playgroud)
和:
<driver name="com.mysql" module="com.mysql" />
Run Code Online (Sandbox Code Playgroud)
每次我启动jboss服务器时都会看到以下消息:
service jboss.jdbc-driver.com_mysql (missing) dependents: [service jboss.data-source.java:jboss/datasources/mysqlDS]
当我进入管理控制台并查看数据源时,会在那里列出mysqlDS,但是当我点击它时我得到错误(抱歉无法在那里选择文本,所以这里是图像):
我正在使用IntelliJ IDEA
和JBOSS AS 7
.当我尝试在调试模式下部署我的应用程序时,我发生此异常java.lang.OutOfMemoryError: PermGen space
,服务器没有回答.但是如果我使用Eclipse,那么同一台服务器就没有这样的问题了!我怎么能解决这个问题?
我正在尝试使用RESTEasy框架将Cache-Control标头添加到JBoss 7中生成的响应中.但是,由于JBoss默认添加了no-cache标头,所有响应最终都会获得多个Cache-Control标头.
我找不到任何设置来删除它,并且添加拦截器也无法正常工作,因为稍后会添加no-cache标头.
有人能告诉我如何在JBoss 7中禁用默认的pragma和缓存控制头吗?
注意:我正在使用无状态EJB的resteasy.
@Path("/api")
@Local
public interface UCSRestServiceInterface
{
@GET
@Path("/token")
@Produces("application/json")
@Cache(maxAge = 3600, noTransform = true)
public Response getToken();
}
Run Code Online (Sandbox Code Playgroud)
获取响应标头为,
{
"pragma": "No-cache",
"date": "Thu, 11 Feb 2016 20:16:30 GMT",
"content-encoding": "gzip",
"server": "Apache-Coyote/1.1",
"x-frame-options": "SAMEORIGIN",
"vary": "Accept-Encoding,User-Agent",
"content-type": "application/json",
"cache-control": "no-cache, no-transform, max-age=3600",
"transfer-encoding": "chunked",
"connection": "Keep-Alive",
"keep-alive": "timeout=15, max=100",
"expires": "Wed, 31 Dec 1969 19:00:00 EST"
}
Run Code Online (Sandbox Code Playgroud) 我目前正在将GWT应用程序从JBoss 5.1迁移到JBoss 7.0 EAP服务器.
我在部署到服务器的战争中捆绑了gwt-servlet.jar
我收到以下错误.
05:11:49,068 ERROR [io.undertow.servlet] (default task-5) Exception while dispatching incoming RPC call: com.google.gwt.user.client.rpc.SerializationException: Type 'java.io.FileNotFoundException' was not included in the set of types which can be serialized by this SerializationPolicy or its Class object could not be loaded. For security
purposes, this type will not be serialized.: instance = java.io.FileNotFoundException
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize(ServerSerializationStreamWriter.java:667)
at com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamWriter.writeObject(AbstractSerializationStreamWriter.java:130)
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter$ValueWriter$8.write(ServerSerializationStreamWriter.java:153)
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeValue(ServerSerializationStreamWriter.java:587)
at com.google.gwt.user.server.rpc.RPC.encodeResponse(RPC.java:605)
at com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure(RPC.java:393)
at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:579)
at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:265)
at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:305)
at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at …
Run Code Online (Sandbox Code Playgroud)