小编jyo*_*eel的帖子

zip4j,从输入流中提取受密码保护的文件(blob 输入流是一个 zip 文件)

我有一个数据库,其中包含 blob 和该数据库内受密码保护的 zip,使用我传统上看到的标准文件对象方法

        File zipFile = new File("C:\\file.zip");        
        net.lingala.zip4j.core.ZipFile table = new net.lingala.zip4j.core.ZipFile(zipFile);                    
        if (table.isEncrypted())
            table.setPassword(password);           

        net.lingala.zip4j.model.FileHeader entry = table.getFileHeader("file_inside_the_zip.txt");
        return table.getInputStream(entry); //Decrypted inputsteam!
Run Code Online (Sandbox Code Playgroud)

我的问题是,我如何在不使用临时文件的情况下实现这样的东西,并且纯粹单独获取 blob 的输入流,到目前为止我有这样的东西

InputStream zipStream = getFileFromDataBase("stuff.zip");
//This point forward I have to save zipStream as a temporary file and use the traditional code above
Run Code Online (Sandbox Code Playgroud)

java zip4j

5
推荐指数
1
解决办法
4759
查看次数

Proguard 将所有混淆的类移至一个包中

到目前为止,我可以通过 proguard 保留一些类和方法等,现在混淆工作完美,这是我的问题,我注意到 proguard 碰巧重新打包了一些这样的类com.a.acom.a.b有没有一种方法可以避免留下类似的提示com.x.x并将所有一个包中的混淆类,例如a.a.**?(我见过的现实生活中的提示示例看起来像org.apache.a.x,任何反编译我的代码的人都会立即跳过该特定包,因为它散发着库 jar 的味道,我想将混淆的库和混淆的原始代码合并到一个包中)。我尝试了这个配置,但它不起作用。

        -allowaccessmodification
        -mergeinterfacesaggressively
        -useuniqueclassmembernames
        -keeppackagenames doNotKeepAThing   
Run Code Online (Sandbox Code Playgroud)

java android proguard

4
推荐指数
1
解决办法
1960
查看次数

以编程方式配置嵌入式服务器

下面的代码允许我创建一个嵌入式底部servlet服务器,我在设置连接器设置的'max-parameters'时遇到问题,我理解它的方式通常是通过xml文件配置的.

   public static String initCustomServer_(Servlet servlet,int preferedPort,String servletName,String[] resourceList,String... domainName){
    String contextURL = null;
    int curPort = preferedPort==-1?9001:preferedPort;
    boolean initServ = false;
    System.out.println("====servlet running in local mode====");
    while(!initServ) {
        try{
            io.undertow.servlet.api.DeploymentInfo servletBuilder = io.undertow.servlet.Servlets.deployment()
                    .setClassLoader(servlet.getClass().getClassLoader())
                    .setContextPath(domainName.length==0?"/":"/"+domainName[0])
                    .setDeploymentName("test.war")
                    .addServlets(
                            io.undertow.servlet.Servlets.servlet(servletName, servlet.getClass()).addMapping("/"+servletName)
                    )
                    .setResourceManager(new io.undertow.server.handlers.resource.FileResourceManager(new File("src/dss_core/HTML5/webapp"), 1));

            io.undertow.servlet.api.DeploymentManager manager = io.undertow.servlet.Servlets.defaultContainer().addDeployment(servletBuilder);

            manager.deploy();

            io.undertow.server.HttpHandler servletHandler = manager.start();
            io.undertow.server.handlers.PathHandler path = io.undertow.Handlers.path(io.undertow.Handlers.redirect(domainName.length==0?"/":"/"+domainName[0]))
                    .addPrefixPath(domainName.length==0?"/":"/"+domainName[0], servletHandler);

            io.undertow.Undertow server = io.undertow.Undertow.builder()
                    .addHttpListener(curPort, "localhost")
                    .setHandler(path)
                    .build();

            server.start();
            initServ = true;
            contextURL = "http://localhost:"+curPort+(domainName.length==0?"":"/"+domainName[0])+"/"+servletName;
        } catch (Exception ex) { …
Run Code Online (Sandbox Code Playgroud)

java undertow

3
推荐指数
1
解决办法
1448
查看次数

两个上下文一个服务器码头

我有两个jetty嵌入式服务器,localhost:9001/WebApp1和localhost:9002/WebApp2,你可以看到它们在不同的端口上.我希望他们在创建服务器期间共享相同的端口是否可能?(顺便说一下,它们也是两个独立的jar文件).所以我可以做这样的事情而不是localhost:9001/WebApp1和localhost:9001/WebApp2

或者我坚持制作战争文件,然后将它们包含在tomcat/glassfish服务器中

在创建服务器期间我经常看到这个

ContextHandler context = new ContextHandler();
context.setContextPath("/WebApp1");
context.setHandler(new WebApp1());
Server server = new Server(9001);
server.setHandler(context);
server.start();            
server.join();
Run Code Online (Sandbox Code Playgroud)

在第二个应用程序,我想有一些看起来像这样的东西

ContextHandler context = new ContextHandler();
context.setContextPath("/WebApp2");
context.setHandler(new WebApp2());
Server server = getExistingServer(9001);
server.addHandler(context);
Run Code Online (Sandbox Code Playgroud)

我看到有这样的方法server.getHandlers(); 返回一个处理程序数组如何向现有列表添加新处理程序,或者在端口9001上运行现有的jetty服务器

java jetty

1
推荐指数
1
解决办法
5027
查看次数

标签 统计

java ×4

android ×1

jetty ×1

proguard ×1

undertow ×1

zip4j ×1