小编Rob*_*ich的帖子

用Java中的泛型参数覆盖方法?

我有一个抽象类Monitor.java,它由Class EmailMonitor.java子类.

方法:

public abstract List<? extends MonitorAccount> performMonitor(List<? extends MonitorAccount> accounts)
Run Code Online (Sandbox Code Playgroud)

Monitor.java中定义,必须在EmailMonitor.java中重写.

我目前在EmailMonitor.java中重写了如下方法:

@Override
public List<EmailAccount> performMonitor(List<EmailAccount> emailAccounts) {
    //...unrelated logic
    return emailAccounts;
}
Run Code Online (Sandbox Code Playgroud)

但是,这会产生编译时错误:

Name clash: The method performMonitor(List<EmailAccount>) of type EmailMonitor has the same erasure as performMonitor(Lis<? extends MonitorAccount> emailAccounts) of type Monitor but does not override it

EmailAccount是一个子类MonitorAccount,所以(至少在我看来)以这种方式覆盖它是完全有道理的.虽然编译器对我的逻辑不满意,但是如何在保持编译时检查以确保所有调用EmailMonitor.performMonitor()接收列表EmailAccount而不是其他类型的MonitorAccount

java generics inheritance

42
推荐指数
2
解决办法
4万
查看次数

在nginx中编辑标题值

背景
因此我有一台服务器运行隐藏在Apache代理后面的tomcat应用程序.代理提供了更加用户友好的URL以及具有自动重定向的SSL加密,因此只能通过https访问该应用程序.

我正忙着将它迁移到nginx代理.

我遇到的一个问题是,在登录时,我的应用程序以http的形式发回一个"LocationAfterLogon"标题.

http://192.168.x.x:8080/myapp/index.jsp. 
Run Code Online (Sandbox Code Playgroud)

返回的IP地址来自在互联网上不可见的代理服务器.因此,浏览器尝试导航到它时会出现连接错误.

作为一种解决方法,我使用了nginx指令:

  • proxy_hide_header:隐藏从代理服务器返回的LocationAfterLogin标头
  • add_header:添加一个新的LocationAfterLogin网址.

所以我的配置如下所示

            #header for location after logon of demo app
            add_header LocationAfterLogon http://example.com/demo/index.jsp;
            #hide the real LocationAfterLogon
            proxy_hide_header LocationAfterLogon;
Run Code Online (Sandbox Code Playgroud)

问题
我需要能够在LocationAfterLogon上进行正则表达式替换或类似操作,因为它并不总是指向index.jsp,具体取决于登录页面拦截了哪个URL.

我知道我也可以重写tomcat应用程序来发回相对URL,但我想在nginx配置中完成所有操作.

我也读过关于nginx more_set_headers的内容.尚未尝试过.它允许我编辑标题吗?

Apache有我之前使用的Header编辑指令,所以我正在寻找类似的东西.

TL; DR
是否可以使用正则表达式替换或在Nginx中类似编辑标题位置?

nginx

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

使用vbscript在单独的进程中启动Internet Explorer 8

由于最近在IE8中添加了"功能",其中新窗口自动与单个会话相关联,因此我们的一些代码表现不正常.

这是因为单独的应用程序会在激活时启动新的IE窗口,一旦用户完成,请关闭窗口.这在IE7中运行良好,因为窗口中的会话信息保持独立.但是在IE8中,由于会话在IE窗口之间共享,我们发现"弹出"应用程序会破坏第一个应用程序上的会话.

我已经阅读了有关nomerge开关的信息,因此这是一种解决方法,但我想知道是否有办法将解决方案用于vbscript的"CreateObject"; 即:

Dim ieWin As Object
Set ieWin = CreateObject("InternetExplorer.Application")
Run Code Online (Sandbox Code Playgroud)

有没有办法在调用CreateObject函数时发送参数?

vbscript internet-explorer-8

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

Spring Data Rest(SDR)错误:PersistentEntity不能为null

我正在努力通过SDR公开我的Spring数据存储库.当我导航到我的休息URL(http:// localhost:8080/trxes)时,我收到一个错误:{"cause":null,"message":"PersistentEntity不能为空!"}

仔细检查一下spring数据源,我看到getRepositoryFactoryInfoFor()方法返回空的存储库信息,即

private RepositoryFactoryInformation<Object, Serializable> getRepositoryFactoryInfoFor(Class<?> domainClass) {

    Assert.notNull(domainClass, "Domain class must not be null!");

    RepositoryFactoryInformation<Object, Serializable> repositoryInfo = repositoryFactoryInfos.get(ClassUtils
            .getUserClass(domainClass));
    return repositoryInfo == null ? EMPTY_REPOSITORY_FACTORY_INFO : repositoryInfo;
}
Run Code Online (Sandbox Code Playgroud)

我的问题的可能原因是我的持久化实体继承自单个基类,我使用单表策略如下:

数据库中有一个TRX表,具有匹配的Trx类.VariableIncome,VariableExpense,FixedIncome和FixedExpense都继承自Trx并持久保存到TRX表.

    @Entity
    @Table(name = "TRX")
    @Inheritance(strategy = InheritanceType.SINGLE_TABLE)
    @DiscriminatorColumn(name = "TRX_TYPE", discriminatorType = DiscriminatorType.STRING)
    abstract public class Trx extends AbstractPersistable<Long> {
Run Code Online (Sandbox Code Playgroud)

所有子类看起来类似于下面显示的VariableIncome:

    @Entity
    @DiscriminatorValue("VARIABLE_INCOME")
    public class VariableIncome extends Trx {
Run Code Online (Sandbox Code Playgroud)

我的存储库设置是(此类没有注释):

public interface TrxRepository extends CrudRepository<Trx, Long> {
Run Code Online (Sandbox Code Playgroud)

我运行描述的设置:

@SpringBootApplication
public class RestApplication {

    public …
Run Code Online (Sandbox Code Playgroud)

spring-data-rest

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