在本文中,我们将给您介绍关于如何在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部署)
- gradle如何打war包一个包含了java和groovy代码的web项目?
- java – 在Wildfly 8.2中配置日志的正确方法
- java – 在WildFly中使用自定义授权管理器
- java – 在Wildfly中部署Angular应用程序
如何在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项目?
我现在打包时遇到了问题。
首先我确定,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中配置日志的正确方法
/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?如果是这样的话
解决方法
>向控制台添加一个处理程序:
<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中使用自定义授权管理器
的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,两者的行为方式相同.
有谁知道这是一个错误还是错过了配置步骤?
解决方法
java – 在Wildfly中部署Angular应用程序
我使用我的公共IP地址(通过端口转发)从Internet访问我的服务器.
我的问题是如何使用我的公共IP从Internet访问Angular应用程序.我还可以在Wildfly上部署吗?我怎么做?
解决方法
例如,如果您将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应用程序等相关内容,可以在本站寻找。
本文标签: