GVKun编程网logo

如何在wildfly 11中上传带有外部jar的Web项目?(wildfly部署)

21

在本文中,我们将给您介绍关于如何在wildfly11中上传带有外部jar的Web项目?的详细内容,并且为您解答wildfly部署的相关问题,此外,我们还将为您提供关于gradle如何打war包一个包含

在本文中,我们将给您介绍关于如何在wildfly 11中上传带有外部jar的Web项目?的详细内容,并且为您解答wildfly部署的相关问题,此外,我们还将为您提供关于gradle如何打war包一个包含了java和groovy代码的web项目?、java – 在Wildfly 8.2中配置日志的正确方法、java – 在WildFly中使用自定义授权管理器、java – 在Wildfly中部署Angular应用程序的知识。

本文目录一览:

如何在wildfly 11中上传带有外部jar的Web项目?(wildfly部署)

如何在wildfly 11中上传带有外部jar的Web项目?(wildfly部署)

如何解决如何在wildfly 11中上传带有外部jar的Web项目??

我需要将我的 Web 项目上传到 Wildfly 11。我第一次尝试在没有外部库的情况下上传我的项目并且它工作正常,但是当我添加新库时,它不再允许我在 Wildfly 11 中上传项目。如果我在 Eclipse IDE 中将它作为 java 运行,则运行良好。我在 Eclipse 中生成了与导出项目的战争,出现的错误如下。

    21:22:43,137 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-8) MSC000001: Failed to start service jboss.deployment.unit."ApiPolizaApesegTest.war".POST_MODULE: org.jboss.msc.service.StartException in service jboss.deployment.unit."ApiPolizaApesegTest.war".POST_MODULE: WFLYSRV0153: Failed to process phase POST_MODULE of deployment "ApiPolizaApesegTest.war"
    at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:172)
    at org.jboss.msc.service.ServiceControllerImpl$startTask.startService(ServiceControllerImpl.java:2032)
    at org.jboss.msc.service.ServiceControllerImpl$startTask.run(ServiceControllerImpl.java:1955)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(UnkNown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(UnkNown Source)
    at java.lang.Thread.run(UnkNown Source)
Caused by: java.lang.RuntimeException: WFLYSRV0177: Error getting reflective information for class imp.ws.soatcimtc.rimac.soap.soAPImpl with ClassLoader ModuleClassLoader for Module "deployment.ApiPolizaApesegTest.war" from Service Module Loader
    at org.jboss.as.server.deployment.reflect.DeploymentReflectionIndex.getClassIndex(DeploymentReflectionIndex.java:78)
    at org.jboss.as.ee.Metadata.MethodAnnotationAggregator.runtimeAnnotationinformation(MethodAnnotationAggregator.java:57)
    at org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.handleAnnotations(InterceptorAnnotationProcessor.java:106)
    at org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.processComponentConfig(InterceptorAnnotationProcessor.java:91)
    at org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.deploy(InterceptorAnnotationProcessor.java:76)
    at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:165)
    ... 5 more
Caused by: java.lang.NoClassDefFoundError: com/amazonaws/Request
    at java.lang.class.getDeclaredFields0(Native Method)
    at java.lang.class.privateGetDeclaredFields(UnkNown Source)
    at java.lang.class.getDeclaredFields(UnkNown Source)
    at org.jboss.as.server.deployment.reflect.ClassReflectionIndex.<init>(ClassReflectionIndex.java:72)
    at org.jboss.as.server.deployment.reflect.DeploymentReflectionIndex.getClassIndex(DeploymentReflectionIndex.java:70)
    ... 10 more
Caused by: java.lang.classNotFoundException: com.amazonaws.Request from [Module "deployment.ApiPolizaApesegTest.war" from Service Module Loader]
    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:198)
    at org.jboss.modules.ConcurrentClassLoader.performloadClassUnchecked(ConcurrentClassLoader.java:412)
    at org.jboss.modules.ConcurrentClassLoader.performloadClass(ConcurrentClassLoader.java:400)
    at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:116)
    ... 15 more

21:22:43,142 ERROR [org.jboss.as.controller.management-operation] (External Management Request Threads -- 6) WFLYCTL0013: Operation ("add") Failed - address: ([("deployment" => "ApiPolizaApesegTest.war")]) - failure description: {"WFLYCTL0080: Failed services" => {"jboss.deployment.unit.\"ApiPolizaApesegTest.war\".POST_MODULE" => "WFLYSRV0153: Failed to process phase POST_MODULE of deployment \"ApiPolizaApesegTest.war\"
    Caused by: java.lang.RuntimeException: WFLYSRV0177: Error getting reflective information for class imp.ws.soatcimtc.rimac.soap.soAPImpl with ClassLoader ModuleClassLoader for Module \"deployment.ApiPolizaApesegTest.war\" from Service Module Loader
    Caused by: java.lang.NoClassDefFoundError: com/amazonaws/Request
    Caused by: java.lang.classNotFoundException: com.amazonaws.Request from [Module \"deployment.ApiPolizaApesegTest.war\" from Service Module Loader]"}}
21:22:43,144 ERROR [org.jboss.as.server] (External Management Request Threads -- 6) WFLYSRV0021: Deploy of deployment "ApiPolizaApesegTest.war" was rolled back with the following failure message: 
{"WFLYCTL0080: Failed services" => {"jboss.deployment.unit.\"ApiPolizaApesegTest.war\".POST_MODULE" => "WFLYSRV0153: Failed to process phase POST_MODULE of deployment \"ApiPolizaApesegTest.war\"
    Caused by: java.lang.RuntimeException: WFLYSRV0177: Error getting reflective information for class imp.ws.soatcimtc.rimac.soap.soAPImpl with ClassLoader ModuleClassLoader for Module \"deployment.ApiPolizaApesegTest.war\" from Service Module Loader
    Caused by: java.lang.NoClassDefFoundError: com/amazonaws/Request
    Caused by: java.lang.classNotFoundException: com.amazonaws.Request from [Module \"deployment.ApiPolizaApesegTest.war\" from Service Module Loader]"}}

我觉得我可能不认识外部库,我通过jar添加库

解决方法

您需要将“外部库”打包到您的战争中,并使用新战争重新部署应用程序。 另外,WildFly 11 已经很老了,我建议升级到 WildFly 23。

gradle如何打war包一个包含了java和groovy代码的web项目?

gradle如何打war包一个包含了java和groovy代码的web项目?

我现在打包时遇到了问题。

首先我确定,groovy的类在编译时是能够正确被编译成class文件的。

问题是在打包的时候,只有java类被打进了war包,groovy的并没有。

我的项目布局应该是按照gradle web项目的标准来的:

src-----main

          -----java

          -----resources

          -----webapp

    -----test

想请教高手怎么解决这个问题,付上build.gradle文件

apply plugin: ''war''
apply plugin: ''groovy''
apply plugin: ''eclipse-wtp''


sourceSets {
  main {
    java {
      srcDir ''src/main/java''
    }
    resources {
      srcDirs ''src/main/resources''
    }
  }
}


repositories {
    mavenCentral();
}


dependencies {
    compile ''org.springframework:spring-webmvc:4.1.7.RELEASE'';
compile ''org.codehaus.groovy:groovy-all:2.4.3'';
}


war{
baseName = ''ROOT''
}

java – 在Wildfly 8.2中配置日志的正确方法

java – 在Wildfly 8.2中配置日志的正确方法

我在设置Wildfly-8.2.0的日志时感到困惑.最初我使用了我自己的日志系统,在WAR文件中内置log4j.xml,这些都很好.但是,当我对日志配置进行任何更改时,我需要重新部署应用程序以使更改生效.所以,我切换到JBoss记录器子系统.以下是我从jboss-cli到standalone.xml的配置
/subsystem=logging/custom-handler=myplatform:add(class=org.apache.log4j.RollingFileAppender,module=org.jboss.log4j.logmanager,formatter="%d{.yyyy-MM-dd} %-5p [%c] (%t) %s%E%n",properties={MaxFileSize=1024000,maxBackupIndex=20,file="${jboss.server.log.dir}/myplatform-debug.log"})

所以在standalone.xml中添加了以下配置

<custom-handler name="example"module="org.jboss.log4j.logmanager">
                <formatter>
                    <pattern-formatter pattern="%d{.yyyy-MM-dd} %-5p [%c] (%t) %s%E%n"/>
                </formatter>
                <properties>
                    <property name="MaxFileSize" value="1024000"/>
                    <property name="maxBackupIndex" value="20"/>
                    <property name="file" value="${jboss.server.log.dir}/ott-platform-log.log"/>
                </properties>
            </custom-handler>

然后是一个记录器

<logger category="com.mycompany.project.module1">
  <level name="DEBUG"/>
    <handlers>
      <handler name="myplatform"/>
    </handlers>
</logger>

一切都很好,但是我的所有应用程序日志也登录到服务器日志中.而且,在控制台日志中也是如此.我不想这样做,毕竟我已经为我的项目分别配置了记录器!如何停止服务器日志我的日志登录到server.log?还是有一种方法来使用appender?如果是这样的话

解决方法

从“clean”standalone.xml中,我执行以下操作:

>向控制台添加一个处理程序:

<profile>
    <subsystem xmlns="urn:jboss:domain:logging:2.0">
        ...
        <console-handler name="CONSOLE_HANDLER">
            <level name="DEBUG"/>
            <formatter>
                <named-formatter name="ECLIPSE_PATTERN"/>
            </formatter>
        </console-handler>
        ...

>如果您希望日志文件:

<profile>
    <subsystem xmlns="urn:jboss:domain:logging:2.0">
       ...
       <periodic-rotating-file-handler name="MI_PROJECT_FILE_HANDLER" autoflush="true">
            <formatter>
                <named-formatter name="ECLIPSE_PATTERN"/>
            </formatter>
            <file relative-to="jboss.server.log.dir" path="myProject.log"/>
            <suffix value=".yyyy-MM-dd"/>
            <append value="true"/>
        </periodic-rotating-file-handler>
       ...

>记录器(与1和2相同的级别)注意到使用 – 父处理程序

<logger category="com.company.project" use-parent-handlers="false">
    <level name="DEBUG"/>
    <handlers>
        <handler name="MI_PROJECT_FILE_HANDLER"/>
        <handler name="CONSOLE_HANDLER"/>
    </handlers>
</logger>

>我使用了一个自定义模式(同级别):

<formatter name="ECLIPSE_PATTERN">
    <pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
</formatter>

>请确保:

<root-logger>
    <level name="INFO"/>
    <handlers>
        <handler name="CONSOLE"/>
        <handler name="FILE"/>
    </handlers>
</root-logger>

java – 在WildFly中使用自定义授权管理器

java – 在WildFly中使用自定义授权管理器

我已经成功使用自定义登录模块.现在我尝试使用以下代码告诉WildFly使用我自己的自定义授权管理器:

的jboss-web.xml中:

<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
    <security-domain>CustomSecurityDomain</security-domain>
</jboss-web>

standalone.xml:

...
        <subsystem xmlns="urn:jboss:domain:security:1.2">
            <security-domains>
                ...
                <security-domain name="CustomSecurityDomain" cache-type="default">
                    <authentication>
                        <login-module code="my.CustomLoginModule" flag="required">
                            <module-option name="usersProperties" value="user.properties"/>
                            <module-option name="rolesProperties" value="roles.properties"/>
                        </login-module>
                    </authentication>
                    <authorization>
                        <policy-module code="my.CustomAuthorizationManager" flag="required"/>
                    </authorization>
                </security-domain>
            </security-domains>
        </subsystem>
        ...

CustomAuthorizationManager.java:

package my;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import io.undertow.security.idm.Account;
import io.undertow.servlet.api.AuthorizationManager;
import io.undertow.servlet.api.Deployment;
import io.undertow.servlet.api.ServletInfo;
import io.undertow.servlet.api.SingleConstraintMatch;
import io.undertow.servlet.api.TransportGuaranteeType;

public class CustomAuthorizationManager implements AuthorizationManager {

    @Override
    public boolean canAccessResource(List<SingleConstraintMatch> arg0,Account arg1,ServletInfo arg2,HttpServletRequest arg3,Deployment arg4) {
        // do something
        return false;
    }

    @Override
    public boolean isUserInRole(String arg0,Deployment arg4) {
        // do something
        return false;
    }

    @Override
    public TransportGuaranteeType transportGuarantee(TransportGuaranteeType arg0,TransportGuaranteeType arg1,HttpServletRequest arg2) {
        // do something
        return null;
    }

}

通过使用调试器并将断点设置到我自己的CustomAuthorizationManager和默认的io.undertow.servlet.core.DefaultAuthorizationManager实现,我可以看到它使用默认值而不是我的自定义实现.似乎WildFly忽略了standalone.xml中的配置.
将WildFly调试级别设置为TRACE表明我的CustomAuthorizationManager已正确部署.我尝试使用WildFly 9和10,两者的行为方式相同.

有谁知道这是一个错误还是错过了配置步骤?

解决方法

尝试安全管理元素,如下所述: https://docs.jboss.org/author/display/WFLY10/Security+subsystem+configuration

java – 在Wildfly中部署Angular应用程序

java – 在Wildfly中部署Angular应用程序

我创建了一个AngularJs应用程序,它只使用我的REST api后端(内置于 java并部署在Wildfly上).

我使用我的公共IP地址(通过端口转发)从Internet访问我的服务器.

我的问题是如何使用我的公共IP从Internet访问Angular应用程序.我还可以在Wildfly上部署吗?我怎么做?

解决方法

您可以将角度应用程序打包在与REST后端API相同的应用程序中.

例如,如果您将REST API封装在.war包中,则可以将您的anglar应用程序文件(html页面,js脚本,…)放在WAR包根目录中,将REST资源放在WEB-INF / lib目录中打包为JAR文件.

请参阅WAR包装详细信息here.

然后,要查询您的REST API,您只需提供资源URI,而不是基本URL(包括webapp上下文),因为角度应用程序属于webapp,它也会暴露您的REST API.

例如,如果您想获得一个资源,可以使用angular:(使用REST API在应用程序配置中使用’rs’路径并使用$http角度服务)

$http.get('rs/icecreams?flavoor=strawBerry')

关于如何在wildfly 11中上传带有外部jar的Web项目?wildfly部署的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于gradle如何打war包一个包含了java和groovy代码的web项目?、java – 在Wildfly 8.2中配置日志的正确方法、java – 在WildFly中使用自定义授权管理器、java – 在Wildfly中部署Angular应用程序等相关内容,可以在本站寻找。

本文标签: