当前位置: 首页 > news >正文

led灯外贸网站建设建设网站南沙

led灯外贸网站建设,建设网站南沙,1 网站建设的目标是什么,淄博网站设计公司本文所述文件服务组件在笔者此前一篇文章中已有阐述(基于netty的文件上传下载组件)#xff0c;不过本文将基于之前这个实现再次进行升级改造#xff0c;利用基于注解的方式进行自动装配。1. 简介1.1 Netty简介Netty是一个异步事件驱动的网络应用程序框架#xff0c;用于快速…本文所述文件服务组件在笔者此前一篇文章中已有阐述(基于netty的文件上传下载组件)不过本文将基于之前这个实现再次进行升级改造利用基于注解的方式进行自动装配。1. 简介1.1 Netty简介Netty是一个异步事件驱动的网络应用程序框架用于快速开发可维护的高性能协议服务器和客户端。关于其详细的介绍可以参考Netty官方网站。Netty is a NIO client server framework which enables quick and easy development of network applications such as protocol servers and clients. It greatly simplifies and streamlines network programming such as TCP and UDP socket server.Netty主要特点Unified API for various transport types - blocking and non-blocking socket(统一API)Based on a flexible and extensible event model which allows clear separation of concerns(事件模型)Highly customizable thread model - single thread, one or more thread pools such as SEDA(线程模型)True connectionless datagram socket support (since 3.1)(无连接数据报文Socket支持)1.2 组件功能介绍该组件基于netty3.6.3实现具有如下功能文件上传文件替换文件删除如果是图片的话还可以生成缩略图等功能。使用简单只需要引入commons-doc-client-netty即可以实现文件的以上操作。本组件分为三个module分别为commons-doc-server-nettyNetty实现文件服务组件的服务端commons-doc-commonNetty文件服务组件公共组件commons-doc-client-nettyNetty文件服务组件的客户端2. 服务端2.1 功能简介服务端组件实现以下功能文件上传文件替换文件删除如果是图片的话还可以生成缩略图等功能。代码结构如下图所示所有的文件服务都是基于接口DocServerProcessor进行的主要有以下几个实现类UploadDocServerHandler实现文件上传服务ReplaceDocServerHandler实现文件替换服务DeleteDocServerHandler实现文件删除服务CreateThumbPictureServerHandler实现创建图片缩略图服务2.2 实现步骤具体实现步骤以文件上传为例。首先 org.fortune.doc.server.support.DocServerHandler类会持续监听客户端的请求如果是文件处理动作则会进入messageReceived方法进行相应的处理逻辑。该类定义了以下成员变量//http请求private HttpRequest request;//是否需要断点续传作业private boolean readingChunks;//接收到的文件内容private final StringBuffer responseContent new StringBuffer();//解析收到的文件private static final HttpDataFactory factory new DefaultHttpDataFactory(DefaultHttpDataFactory.MINSIZE); //16384L//post请求的解码类,它负责把字节解码成Http请求。private HttpPostRequestDecoder decoder;//请求参数private RequestParam requestParams new RequestParam();该方法实现中如果文件大小小于chunked的最小值则直接进行文件上传操作。否则需要进行分块处理。然后进行文件上传操作。文件大小小于1k的操作if (request.isChunked()) { //说明还没有请求完成继续this.readingChunks true;LOGGER.info(文件分块操作....);} else {LOGGER.info(文件大小小于1KB文件接收完成直接进行相应的文件处理操作....);//请求完成则接收请求参数进行初始化请求参数RequestParamParser.parseParams(this.decoder, this.requestParams);//根据请求参数进行相应的文件操作LOGGER.info(文件处理开始....requestParams参数解析{},requestParams);String result DocServerHandlerFactory.process(this.requestParams);LOGGER.info(文件处理结束....FileServerHandlerFactory处理结果{},result);this.responseContent.append(result);//给客户端响应信息writeResponse(e.getChannel());e.getFuture().addListener(ChannelFutureListener.CLOSE);}需要分块处理操作HttpChunk chunk (HttpChunk) e.getMessage();try {//chunk.getContent().capacity();LOGGER.info(文件分块操作....文件大小{} bytes,chunk.getContent().capacity());this.decoder.offer(chunk);} catch (HttpPostRequestDecoder.ErrorDataDecoderException e1) {e1.printStackTrace();this.responseContent.append(e1.getMessage());writeResponse(e.getChannel());Channels.close(e.getChannel());return;}if (chunk.isLast()) {//文件末尾this.readingChunks false;LOGGER.info(到达文件内容的末尾进行相应的文件处理操作....start);RequestParamParser.parseParams(this.decoder, this.requestParams);LOGGER.info(文件处理开始....requestParams参数解析{},requestParams);String result DocServerHandlerFactory.process(this.requestParams);LOGGER.info(文件处理结束....FileServerHandlerFactory处理结果{},result);this.responseContent.append(result);//给客户端响应信息writeResponse(e.getChannel());e.getFuture().addListener(ChannelFutureListener.CLOSE);LOGGER.info(到达文件内容的末尾进行相应的文件处理操作....end);}以上操作主要有两个注意点请求参数的解析工作(根据HttpDataType进行相应参数的赋值操作)根据解析的参数进行相应的文件处理操作(根据文件操作类型选择相应的处理句柄进行文件处理)3. 客户端3.1 功能简介客户端组件主要提供对外访问服务端组件的接口提供以下接口文件上传文件替换文件删除如果是图片的话还可以生成缩略图等功能。代码结构如下org.fortune.doc.client.DocClient类是对外提供接口的工具类,具有以下主要方法uploadFile 文件上传对应文件处理句柄类为org.fortune.doc.client.handler.UploadDocClientHandlerdeleteFile 删除服务端文件对应文件处理句柄类为org.fortune.doc.client.handler.DeleteDocClientHandlerreplaceFile 替换服务端文件对应文件处理句柄类为org.fortune.doc.client.handler.ReplaceDocClientHandlercreateThumbPicture 生成缩略图对应文件处理句柄类为org.fortune.doc.client.handler.CreateThumbPictureClientHandler3.2 实现步骤实现步骤以上传文件为例其他类似实现。直接上代码/*** 文件上传* param file 需要上传的文件* param fileName 文件名称* param thumbMark 是否需要生成缩略图* return* author:landyChris*/public static String uploadFile(File file, String fileName,boolean thumbMark) {DocClientPipelineFactory clientPipelineFactory new DocClientPipelineFactory();//辅助类。用于帮助我们创建NETTY服务ClientBootstrap bootstrap createClientBootstrap(clientPipelineFactory);String strThumbMark Constants.THUMB_MARK_NO;if (thumbMark) {strThumbMark Constants.THUMB_MARK_YES;}//具体处理上传文件逻辑uploadFile(bootstrap, DocClientContainer.getInstance().getHost(),DocClientContainer.getInstance().getPort(), file, fileName, strThumbMark,DocClientContainer.getInstance().getUserName(),DocClientContainer.getInstance().getPassword());Result result clientPipelineFactory.getResult();if ((result ! null) (result.isSuccess())) {return result.getFilePath();}return null;}具有三个参数前面几行代码都是很一些netty的初始化工作具体看一个私有方法uploadFile如下代码所示private static void uploadFile(ClientBootstrap bootstrap, String host,int port, File file, String fileName, String thumbMark,String userName, String pwd) {//1.构建uri对象URI uri getUri(host, port);//2.连接netty服务端ChannelFuture future bootstrap.connect(new InetSocketAddress(host,port));//3.异步获取Channel对象Channel channel future.awaitUninterruptibly().getChannel();if (!future.isSuccess()) {future.getCause().printStackTrace();bootstrap.releaseExternalResources();return;}//4.初始化文件上传句柄对象AbstractDocClientHandler handler new UploadDocClientHandler(host, uri,file, fileName, thumbMark, userName, pwd);//5.获取Request对象HttpRequest request handler.getRequest();//6.获取Http数据处理工厂HttpDataFactory factory getHttpDataFactory();//7.进行数据的包装处理主要是进行上传文件所需要的参数的设置此时调用的句柄是具体的UploadFileClientHandler对象HttpPostRequestEncoder bodyRequestEncoder handler.wrapRequestData(factory);//8.把request写到管道中传输给服务端channel.write(request);//9.做一些关闭资源的动作if (bodyRequestEncoder.isChunked()) {channel.write(bodyRequestEncoder).awaitUninterruptibly();}bodyRequestEncoder.cleanFiles();channel.getCloseFuture().awaitUninterruptibly();bootstrap.releaseExternalResources();factory.cleanAllHttpDatas();}主要有以下实现步骤构建uri对象连接netty服务端异步获取Channel对象初始化文件上传句柄对象获取Request对象获取Http数据处理工厂进行数据的包装处理主要是进行上传文件所需要的参数的设置此时调用的句柄是具体的UploadFileClientHandler对象把request写到管道中传输给服务端做一些关闭资源的动作具体细节实现请参考github上的代码。如果各位读者喜欢的话可以加个star哈。4. 操作指引该文件服务组件的使用需要分为两个部分一个是服务端配置与启动一个是客户端的配置与启动。4.1 服务端配置与启动4.1.1 配置服务端的配置采用yml文件的配置更加的简洁明了主要的注意点是文件存放位置的配置在开发过程中可以有两种方式配置Idea自启动方式如果采用此种方式则需要把rootPath配置到工程路径下(target目录)如下所示# 在idea中执行的话需要配置target目录下的打包文件rootPath: C:\03_code\idea_workspace\fortune-commons\commons-doc-server-netty\target\commons-doc-server-netty\ #上传文件的根目录,实际工作环境按照实际情况更改即可打包后在tomcat独立启动方式# 也可以单独把打包后的war包拷贝到tomcat webapp目录下直接运行也可以rootPath: C:\05_webserver\apache-tomcat-8.5.42\webapps\doc-server #上传文件的根目录,实际工作环境按照实际情况更改即可4.1.2 启动本文采用的是idea自启动方式则需要配置一下tomcat路径以及引入相应的module即可如下图所示需要注意的是在Deployment页签需要配置该项目访问的Application Context否则有可能启动后出现404的情况。如下图所示配置完成即可启动文件服务组件如下图即为启动信息日志....2019-07-20 23:48:56.174 [RMI TCP Connection(3)-127.0.0.1] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean mvcViewResolver2019-07-20 23:48:56.182 [RMI TCP Connection(3)-127.0.0.1] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean viewResolver2019-07-20 23:48:56.208 [RMI TCP Connection(3)-127.0.0.1] INFO org.fortune.commons.core.help.BeanInitializeCompletedListener - spring conf 容器初始化完毕..处理启动之后事件--start2019-07-20 23:48:56.212 [RMI TCP Connection(3)-127.0.0.1] INFO org.fortune.doc.server.DocServerContainer - 加入账户fortune2019-07-20 23:48:56.212 [RMI TCP Connection(3)-127.0.0.1] INFO org.fortune.doc.server.DocServerContainer - 加入账户fortune02019-07-20 23:48:56.213 [RMI TCP Connection(3)-127.0.0.1] INFO org.fortune.doc.server.DocServerContainer - 加入默认账户Account{userNamedefault_account, passwordlyx, rootPathC:\05_webserver\apache-tomcat-8.5.42\bin\, level1, thumbHeight20, thumbWidth20}2019-07-20 23:48:56.296 [RMI TCP Connection(3)-127.0.0.1] INFO org.fortune.commons.core.help.BeanInitializeCompletedListener - spring conf 容器初始化完毕..处理启动之后事件--end2019-07-20 23:48:56.302 [RMI TCP Connection(3)-127.0.0.1] DEBUG org.springframework.jndi.JndiTemplate - Looking up JNDI object with name [java:comp/env/spring.liveBeansView.mbeanDomain]2019-07-20 23:48:56.303 [RMI TCP Connection(3)-127.0.0.1] DEBUG org.springframework.jndi.JndiLocatorDelegate - Converted JNDI name [java:comp/env/spring.liveBeansView.mbeanDomain] not found - trying original name [spring.liveBeansView.mbeanDomain]. javax.naming.NameNotFoundException: Name [spring.liveBeansView.mbeanDomain] is not bound in this Context. Unable to find [spring.liveBeansView.mbeanDomain].2019-07-20 23:48:56.303 [RMI TCP Connection(3)-127.0.0.1] DEBUG org.springframework.jndi.JndiTemplate - Looking up JNDI object with name [spring.liveBeansView.mbeanDomain]2019-07-20 23:48:56.304 [RMI TCP Connection(3)-127.0.0.1] DEBUG org.springframework.jndi.JndiPropertySource - JNDI lookup for name [spring.liveBeansView.mbeanDomain] threw NamingException with message: Name [spring.liveBeansView.mbeanDomain] is not bound in this Context. Unable to find [spring.liveBeansView.mbeanDomain].. Returning null.2019-07-20 23:48:56.307 [RMI TCP Connection(3)-127.0.0.1] INFO org.springframework.web.context.ContextLoader - Root WebApplicationContext initialized in 2216 ms2019-07-20 23:48:56.311 [RMI TCP Connection(3)-127.0.0.1] DEBUG org.springframework.web.filter.CharacterEncodingFilter - Filter characterEncodingFilter configured for use2019-07-20 23:48:56.320 [RMI TCP Connection(3)-127.0.0.1] INFO org.springframework.web.servlet.DispatcherServlet - Initializing Servlet doc-server....然后就可以访问如下页面显示如下不过我们配置的netty端口是9999我们试着访问一下此时我们就可以不依赖客户端直接在网页端进行文件上传的测试操作了。输入账户密码选择相应的文件即可上传上传成功的返回页面如下后台控制台打印出的日志信息如下2019-07-20 23:52:12.833 [New I/O worker #1] INFO org.fortune.doc.server.support.DocServerHandler - 文件分块操作....2019-07-20 23:52:12.835 [New I/O worker #1] INFO org.fortune.doc.server.support.DocServerHandler - 文件分块操作....文件大小1024 bytes2019-07-20 23:52:12.849 [New I/O worker #1] INFO org.fortune.doc.server.support.DocServerHandler - 文件分块操作....文件大小2048 bytes2019-07-20 23:52:12.849 [New I/O worker #1] INFO org.fortune.doc.server.support.DocServerHandler - 文件分块操作....文件大小2048 bytes2019-07-20 23:52:12.850 [New I/O worker #1] INFO org.fortune.doc.server.support.DocServerHandler - 文件分块操作....文件大小3072 bytes2019-07-20 23:52:12.850 [New I/O worker #1] INFO org.fortune.doc.server.support.DocServerHandler - 文件分块操作....文件大小4096 bytes2019-07-20 23:52:12.850 [New I/O worker #1] INFO org.fortune.doc.server.support.DocServerHandler - 文件分块操作....文件大小6144 bytes2019-07-20 23:52:12.852 [New I/O worker #1] INFO org.fortune.doc.server.support.DocServerHandler - 文件分块操作....文件大小8192 bytes2019-07-20 23:52:12.852 [New I/O worker #1] INFO org.fortune.doc.server.support.DocServerHandler - 文件分块操作....文件大小8192 bytes2019-07-20 23:52:12.852 [New I/O worker #1] INFO org.fortune.doc.server.support.DocServerHandler - 文件分块操作....文件大小3072 bytes2019-07-20 23:52:12.853 [New I/O worker #1] INFO org.fortune.doc.server.support.DocServerHandler - 文件分块操作....文件大小8192 bytes2019-07-20 23:52:12.853 [New I/O worker #1] INFO org.fortune.doc.server.support.DocServerHandler - 文件分块操作....文件大小7168 bytes2019-07-20 23:52:12.853 [New I/O worker #1] INFO org.fortune.doc.server.support.DocServerHandler - 文件分块操作....文件大小8192 bytes2019-07-20 23:52:12.854 [New I/O worker #1] INFO org.fortune.doc.server.support.DocServerHandler - 文件分块操作....文件大小8192 bytes2019-07-20 23:52:12.854 [New I/O worker #1] INFO org.fortune.doc.server.support.DocServerHandler - 文件分块操作....文件大小6144 bytes2019-07-20 23:52:12.856 [New I/O worker #1] INFO org.fortune.doc.server.support.DocServerHandler - 文件分块操作....文件大小8157 bytes2019-07-20 23:52:12.862 [New I/O worker #1] INFO org.fortune.doc.server.support.DocServerHandler - 文件分块操作....文件大小0 bytes2019-07-20 23:52:12.862 [New I/O worker #1] INFO org.fortune.doc.server.support.DocServerHandler - 到达文件内容的末尾进行相应的文件处理操作....start2019-07-20 23:52:12.865 [New I/O worker #1] INFO org.fortune.doc.server.support.DocServerHandler - 文件处理开始....requestParams参数解析NETTY WEB ServerUserNamefortunepwdfortuneactionuploadFilefileContentTypeimage/jpegfileSize81 KBgetformPOSTSendSend2019-07-20 23:52:12.867 [New I/O worker #1] INFO org.fortune.doc.server.handler.factory.DocServerHandlerFactory - 进行文件上传操作....2019-07-20 23:52:12.869 [New I/O worker #1] INFO org.fortune.doc.server.handler.UploadDocServerHandler - --srcFileName--psb.jpg2019-07-20 23:52:12.871 [New I/O worker #1] INFO org.fortune.doc.server.handler.UploadDocServerHandler - 文件上传成功,保存路径为:fortune\l\190720235212_1027.jpg,真实路径为C:\03_code\idea_workspace\fortune-commons\commons-doc-server-netty\target\commons-doc-server-netty\/fortune\l\190720235212_1027.jpg2019-07-20 23:52:12.871 [New I/O worker #1] DEBUG org.fortune.doc.server.handler.UploadDocServerHandler - 生成缩略图2019-07-20 23:52:12.872 [New I/O worker #1] INFO org.fortune.doc.server.handler.UploadDocServerHandler - 生成缩略图的名称为:190720235212_1027_thumb.jpg,路径为:C:\03_code\idea_workspace\fortune-commons\commons-doc-server-netty\target\commons-doc-server-netty\/fortune\l\190720235212_1027_thumb.jpg2019-07-20 23:52:13.130 [New I/O worker #1] DEBUG org.fortune.doc.server.handler.factory.DocServerHandlerFactory - 执行结果:{action:uploadFile,code:1,filePath:fortune\\l\\190720235212_1027.jpg,msg:文件上传成功,success:true}2019-07-20 23:52:13.130 [New I/O worker #1] INFO org.fortune.doc.server.support.DocServerHandler - 文件处理结束....FileServerHandlerFactory处理结果{action:uploadFile,code:1,filePath:fortune\\l\\190720235212_1027.jpg,msg:文件上传成功,success:true}2019-07-20 23:52:13.133 [New I/O worker #1] INFO org.fortune.doc.server.support.DocServerHandler - 到达文件内容的末尾进行相应的文件处理操作....end再观察一下netty 代码中的target目录下就有上传的文件了如下所示我们可以通过如下地址进行访问http://localhost:8080/doc-server/fortune//l//190720235212_1027.jpg关于如何得到图片地址则在客户端工具类中有相应的方法获取。4.2 客户端配置与启动4.2.1 配置客户端的配置比较简单也是采用yml文件方式配置如下#上传成功后在需要访问文件web工程中配置以下服务器地址正确格式为# ${host}/${port}/${appName}/${path}# appName为远程文件服务app名称比如doc-server# path为文件上传后服务端返回的文件相对路径#http://localhost:8080/doc-server/fortune//p//190629082821_8300.jpgupload:server:port: 9999 #需要配置的是远程文件服务器netty服务端口号host: 127.0.0.1access: #访问文件port: 8080 #访问文件 web 服务端口号domainName: doc-server #访问文件 web 服务应用名称userName: fortunepassword: fortune需要注意的是文件访问的端口号跟远程文件服务器netty对应的端口是不一样的这点需要特别注意。在调用文件服务返回的路径的时候需要用到服务端访问文件的地址进而访问相应的文件内容。可通过方法 org.fortune.doc.client.DocClientContainer#getDocServerUrl得到相应的服务端地址再拼接上返回的相对路径即可得到文件的完整地址了。4.2.2 启动/调用客户端单元测试用例如下/*** author: landy* date: 2019/5/30 23:37* description:*/RunWith(SpringJUnit4ClassRunner.class) //调用Spring单元测试类ContextConfiguration(classes {SettingsConfiguration.class, // common settings configurationDocClientConfiguration.class,ApplicationContextHelperConfiguration.class}) //加载Spring配置文件public class DocClientTest {Testpublic void test() {DocClient.uploadFile(new File(C:\\06_temp\\psb.jpg), psb.jpg,false);}}同样的服务端也会显示出上述相似的日志信息2019-07-21 00:04:26.704 [New I/O worker #4] INFO org.fortune.doc.server.handler.UploadDocServerHandler - --srcFileName--psb.jpg2019-07-21 00:04:26.705 [New I/O worker #4] INFO org.fortune.doc.server.handler.UploadDocServerHandler - 文件上传成功,保存路径为:fortune\w\190721000426_6348.jpg,真实路径为C:\03_code\idea_workspace\fortune-commons\commons-doc-server-netty\target\commons-doc-server-netty\/fortune\w\190721000426_6348.jpg2019-07-21 00:04:26.705 [New I/O worker #4] DEBUG org.fortune.doc.server.handler.factory.DocServerHandlerFactory - 执行结果:{action:uploadFile,code:1,filePath:fortune\\w\\190721000426_6348.jpg,msg:文件上传成功,success:true}2019-07-21 00:04:26.705 [New I/O worker #4] INFO org.fortune.doc.server.support.DocServerHandler - 文件处理结束....FileServerHandlerFactory处理结果{action:uploadFile,code:1,filePath:fortune\\w\\190721000426_6348.jpg,msg:文件上传成功,success:true}2019-07-21 00:04:26.706 [New I/O worker #4] INFO org.fortune.doc.server.support.DocServerHandler - 到达文件内容的末尾进行相应的文件处理操作....end2019-07-21 00:05:50.539 [http-nio-8080-exec-6] DEBUG org.springframework.web.servlet.DispatcherServlet - GET /doc-server/fortune//w//190721000426_6348.jpg, parameters{}2019-07-21 00:05:50.540 [http-nio-8080-exec-6] DEBUG org.springframework.web.servlet.handler.SimpleUrlHandlerMapping - Mapped to org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler4fcd8ee12019-07-21 00:05:50.542 [http-nio-8080-exec-6] DEBUG org.springframework.web.servlet.DispatcherServlet - Completed 200 OK观察服务端target目录下又多了一个文件显示如下跟日志信息打印出来的路径是一致的我们可以通过返回的地址信息进行访问文件5. 常见问题5.1 Maven依赖问题如果某些jar包无法下载的话可以手动下载然后自己手动执行maven命令安装到本地仓库即可(Then, install it using the command)。mvn install:install-file -DgroupIdcom.fasterxml.jackson.core -DartifactIdjackson-core -Dversion2.9.9.1 -Dpackagingjar -Dfile/path/to/file或者直接利用远程仓库地址进行安装也可( Alternatively, if you host your own repository you can deploy the file there: )mvn deploy:deploy-file -DgroupIdcom.fasterxml.jackson.core -DartifactIdjackson-core -Dversion2.9.9.1 -Dpackagingjar -Dfile/path/to/file -Durl[url] -DrepositoryId[id]5.2 Tomcat 版本问题如果使用Tomcat7则会出现以下问题经过对比发现需要采用Tomcat8以上版本即可JDK版本需要为1.8。七月 23, 2019 11:25:52 下午 org.apache.catalina.startup.ContextConfig processAnnotationsJar严重: Unable to process Jar entry [module-info.class] from Jar [jar:file:/C:/03_code/idea_workspace/fortune-commons/commons-doc-server-netty/target/commons-doc-server-netty/WEB-INF/lib/asm-7.0.jar!/] for annotationsorg.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 19at org.apache.tomcat.util.bcel.classfile.Constant.readConstant(Constant.java:133)at org.apache.tomcat.util.bcel.classfile.ConstantPool.(ConstantPool.java:60)at org.apache.tomcat.util.bcel.classfile.ClassParser.readConstantPool(ClassParser.java:209)at org.apache.tomcat.util.bcel.classfile.ClassParser.parse(ClassParser.java:119)at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2104)at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:1980)at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1946)at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1931)at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1325)at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:878)at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:369)at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5173)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1553)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301)at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:622)at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:569)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301)at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)at com.sun.jmx.remote.security.MBeanServerAccessController.invoke(MBeanServerAccessController.java:468)at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1468)at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76)at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1309)at java.security.AccessController.doPrivileged(Native Method)at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1408)at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:829)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:357)at sun.rmi.transport.Transport$1.run(Transport.java:200)at sun.rmi.transport.Transport$1.run(Transport.java:197)at java.security.AccessController.doPrivileged(Native Method)at sun.rmi.transport.Transport.serviceCall(Transport.java:196)at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:573)at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:834)at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:688)at java.security.AccessController.doPrivileged(Native Method)at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:687)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)at java.lang.Thread.run(Thread.java:748)23:25:53,087 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]23:25:53,088 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
http://www.zqtcl.cn/news/513406/

相关文章:

  • 国外优秀的设计网站八爪鱼磁力搜索引擎
  • 网站建设优化陕西网络营销推广方法与策略
  • 网站建设推广者怎样找到客户百度seo排名帝搜软件
  • 绵阳网站托管网站建设第一品牌
  • 张家港网站建设培训班电商seo引流
  • 网站安全怎么做手机网站 焦点图
  • 阿里云做网站的代码网上申请入团网站
  • 精品课程网站怎么做建筑图纸符号大全解释
  • 高权重网站 内页做跳转给新网站许昌做网站公司哪家专业
  • 咸阳网站建设工作室网站建设经
  • 网站怎么做短信接口新浪wordpress
  • 方维o2o 2.9蓝色团购网站程序源码模板做一电影网站怎么赚钱
  • 口碑好网站建设资源新昌网站建设
  • 苏州做网站的公司排名泉州网络推广专员
  • 无为县做互联网网站备案的时候网站建设方案书要吗
  • 修改网站的备案主体dede网站地图不显示文章列表
  • 建立个人网站的成本织梦html5手机网站模板
  • 怎么自己建一个网站吗php网页设计培训
  • 深圳大型论坛网站建设wordpress国内加速
  • 仿站怎么做广告装饰公司名字
  • 黄冈网站推广收费标准wordpress导航页面设置密码
  • 做网站会犯法吗贵州省建设厅城乡建设网站
  • 做网站和做公众号资金盘网站怎么建设
  • 全国最好的网站建设案例推广方法视频
  • 嘉兴网站建设策划方案在海口注册公司需要什么条件
  • 旅游网站国际业务怎样做建设企业官方网站企业登录
  • 北京市昌平网站建设小米网络营销案例分析
  • 怎么利用360域名做网站微信商城怎么弄
  • 中山h5网站建设天津网站建设技术托管
  • 建网站买的是什么商城网站建设合同