我有一个项目取决于供应商控制的工件.此工件包含一些我依赖的类,以及一些较旧且导致问题的类.有没有办法让maven自动扩展jar,删除类,并将它们重新打包为依赖?我试着举个例子.
supplier:artifact:1.0.0
com.supplier.useful.ClassA
com.supplier.dto.ClassB (old)
us:dependency:1.1.20
com.supplier.dto.ClassB (new)
us:project-web:1.1.20
- supplier:artifact:1.0.0
- us:dependency:1.1.20
Run Code Online (Sandbox Code Playgroud)
所以 - 我需要ClassA在project-web中使用,但我需要使用ClassB来自dependency工件的.我无法修改供应商:工件,或我们:依赖.
有任何想法吗?!
一位同事提到他听说过一个轻量级的集合,当它的内容太满时会自动翻页到磁盘 - 但是他记不住这个名字.我想它看起来像这样:
PagingCollection<Serializable> pagingCollection = new PagingArrayList<>();
pagingCollection.setMaxSizeInMemory(500);
for (int x = 0; x < 1000; x++) { pagingcollection.add("x="+x); }
Run Code Online (Sandbox Code Playgroud)
然后将x = 0推到x = 500到磁盘.关键是能够迭代它而不将整个内容加载到内存中.
这适用于内存容量较小的胖客户端.
有谁知道它(或类似的东西)?
在我的服务类中,我需要可用的hibernate会话.我目前在beans.xml中执行此操作:
<bean id = "userDao" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="target">
<ref bean="userDaoTarget" />
</property>
<property name="proxyInterfaces">
<value>com.app.dao.UserDao</value>
</property>
<property name="interceptorNames">
<list>
<value>hibernateInterceptor</value>
</list>
</property>
<qualifier value="proxy" />
</bean>
...
<bean id="hibernateInterceptor"
class="org.springframework.orm.hibernate3.HibernateInterceptor">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
<bean>
Run Code Online (Sandbox Code Playgroud)
(手工复制,可能是一些错别字..)
我正在使用注释而不是XML,我想知道是否有一种方法可以使用它们配置代理,因为我上面包括hibernate拦截器?如果没有 - 有没有办法可以减少XML的数量(大约7个DAO使它变得非常混乱)
我需要在Eclipse应用程序的状态栏中显示状态指示器.我无法通过ApplicationWindowAdviser(另一个团队拥有核心产品)做出贡献,但我确信我应该能够通过扩展点做出贡献.尽管有很多谷歌搜索,我找不到任何描述如何做到这一点.
有没有办法让这段代码有效?
LogonControl.java
@Audit(AuditType.LOGON)
public void login(String username, String password) {
// do login
}
Run Code Online (Sandbox Code Playgroud)
AuditHandler.java
public void audit(AuditType auditType) {
// persist audit
}
Run Code Online (Sandbox Code Playgroud)
最后一点是,每次调用login()时,都会调用audit(),并使用相应的audittype.
我想AOP可能就是这个的解决方案,但我希望它尽可能简单(我看过的AspectJ教程通常都有非常复杂的注释).
注意:我不想预定义将调用audit的方法,我是为可扩展框架编写的,其他人可能需要使用它.
我正在尝试创建一个Spring应用程序(不是Web应用程序)来执行一些简单的任务.最终他们将与网络上的其他一些Spring应用程序挂钩,但是现在我保持简单.我有一个CheckForNewItems类(扩展Timer),它被配置为每10秒运行一次.
我可以通过以编程方式调用它来确认它运行:
public class Tester {
public static ApplicationContext context;
private void loadContext() {
String filename = "beans.xml";
context = new FileSystemXmlApplicationContext(filename);
}
public static void main(String[] args) {
Tester test = new Tester();
test.loadContext();
CheckNewItemsTask task = (CheckNewItemsTask)context.getBean("checkNewItemsTask");
}
}
Run Code Online (Sandbox Code Playgroud)
运行此按预期工作,task.run()每10秒调用一次.现在我需要弄清楚如何将它部署到JBoss或Tomcat服务器,以便它自动开始运行任务.
我发现的大多数教程只描述了如何运行Spring MVC和servlet,而不是一个独立的应用程序.有谁知道更好吗?
干杯,罗布.
让JBoss在网络上工作时遇到了一些问题.作为一个快速概述,我们有一个开发网络(我称之为DEV)和一个客户端网络(比如说.. CLIENT!).它们通过防火墙连接.在Dev网络中,服务器称为192.168.100.50,在客户端网络上称为10.0.100.50.两个网络中的DNS通过DNS(sqlserver.dev.net)解析相关的IP.
sqlserver提供2个服务,一个通过.NET Web服务,另一个通过JBoss.在DEV网络上运行客户端时,两种服务都可以正常工作.在CLIENT网络上时,只有.NET服务可用.
尝试在以下代码中执行ContextLookup时,JBoss客户端抛出UnknownHostException:
Properties p = new Properties();
p.put("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
p.put("java.naming.factory.url.pkgs", "=org.jboss.naming:org.jboss.jnp.interfaces");
p.put("java.naming.provider.url", "sqlserver.dev.net:1199");
try {
Context c = new InitialContext(p);
cm = (ServiceRemote)c.lookup(Service.RemoteJNDIName);
} catch (NamingException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
Run Code Online (Sandbox Code Playgroud)
例外情况是:
根异常是java.rmi.UnknownHostException:未知主机:SQLserver
我可以确认问题是客户端正在尝试连接到没有域名的'sqlserver'.这已经通过将'sqlserver'添加到客户端的主机文件中进行了测试,并且工作正常.另外,'SQLserver'的拼写很有趣,因为这是Windows主机报告主机名的方式,而不是它如何存储在DNS中.我最好的猜测是,一旦客户端进行初始连接,JBoss会告诉客户端将来连接到'SQLserver',客户端无法解析.
我已经尝试将以下系统属性设置为sqlserver的FQDN:
jgroups.bind_addr
bind.address
java.rmi.server.hostname
有没有人有任何想法?
java ×6
jboss ×2
spring ×2
annotations ×1
aop ×1
collections ×1
dns ×1
eclipse-rcp ×1
maven-2 ×1
rmi ×1