小编Art*_*cis的帖子

迁移到Spring 3后,从Eclipse IDE启动基于Maven的GWT App时出现Spring NamespaceHandler问题

这是一个我已经坚持了好几个小时的问题,到现在为止我感到非常绝望.我将我们的应用程序从Spring 2.5/Hiberante 3.3迁移到Spring 3.0.5/Hibernate 3.6.完成以下工作:

  • 更新的spring依赖项/版本(现在不仅仅是一些依赖项)
  • 更新了Hibernate依赖项/版本
  • 根据'schemaLocation'的版本更新Spring上下文XML文件

在经过不同的小修复和调整后从Eclipse IDE启动时仍然存在的错误如下:

Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/tx]
Run Code Online (Sandbox Code Playgroud)

我查看了其他线程,并意识到当在类路径中找不到特定的lib(在本例中为spring-tx)时会出现这样的问题,但我在Maven依赖项中清楚地看到它.

我做的下一件事是,我为以前的版本构建了WAR,将它部署在Tomcat上,应用程序运行良好!

通过这个我可以得出Eclipse环境配置中缺少某些东西的结论.有趣的是,所有的抱怨都是关于spring-tx, - 当我使用tx命名空间删除单行时 <tx:annotation-driven transaction-manager="transactionManager" /> ...应用程序启动正常而没有抱怨其他命名空间(当然,它没有正常工作,但至少没有抱怨期间初始).

关于我的IDE /项目设置的一些摘要:

  • 应用程序启动由GWT .launch文件执行(GWT ver 2.0.3)
  • 在此启动文件中,有对其他项目的引用,包括具有spring依赖项的serverside
  • 实际上,这个gwt-client项目将服务器端POM作为父级,因此我看到该项目的Maven依赖项中的所有spring依赖项
  • GWT-client项目有/war/WEB-INF/applicationContext.xml,它导入其他上下文XML资源,实际上是使用spring-tx

正式的问题是:在迁移到Spring 3x后,从IDE启动项目会导致此类错误的可能原因是什么(并且作为构建的WAR可以正常部署)?

我不指望直接的答案(除非有人有完全相同的环境和问题),但指导方针,建议会有很大的帮助!

编辑 忘记提及在IDE启动应用程序期间,我有一堆这样的警告:

[WARN] Server class 'javax.persistence.EntityManagerFactory' could not be found in the web app, but was found on the system classpath
   [WARN] Adding classpath entry 'file:/D:/maven/repository/org/hibernate/javax/persistence/hibernate-jpa-2.0-api/1.0.0.Final/hibernate-jpa-2.0-api-1.0.0.Final.jar' to the web app classpath for this …
Run Code Online (Sandbox Code Playgroud)

java eclipse gwt spring

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

Tycho:当通过多模块父母建立时,"无法满足依赖性......"

我必须构建一个带有Maven/Tycho的Eclipse插件,它与其他第三方有依赖关系.由于Tycho尚不支持嵌入依赖项,因此我将项目拆分为以下两项:

  • A-thirdparty:带有打包'bundle'的项目,由maven-bundle-plugin构建,具有'Embed-Dependency'指令,并导出插件'A'所需的所有包
  • A:项目包装'eclipse-plugin',使用tycho-maven-plugin,以及Tycho的target-platform-configuration插件,pomDependencies设置为consider.

当我单独构建它们时(首先是第三方聚合器,然后是项目A本身),一切正常.但是,如果我聚合这两个项目(使用多模块POM),我得到以下Maven错误:

Caused by: java.lang.RuntimeException: "No solution found because the problem is unsatisfiable.": ["Unable to satisfy dependency from A 1.0.0.qualifier to package org.apache.axis2.transaction 0.0.0.", "Unable to satisfy dependency from A 1.0.0.qualifier to package org.apache.axis2.addressing.i18n 0.0.0.", ...
Run Code Online (Sandbox Code Playgroud)

为什么以聚合方式构建项目会导致此错误,如果这是Tycho错误,可以采用哪种解决方法?

但是,如果我只在聚合POM中保留一个模块(独立于哪一个),则没有错误.

编辑

无法使用小型,类似的多模块样本进行重现.这意味着我的POM层次结构有所不同.

EDIT2

在包含相同的依赖集(一对轴2和公理库)之后,能够使用类似的小模块样本进行再现.

EDIT3:简约示例

现在我想知道问题是否缺少我所包含第三方库所需的所有第三方.如果是这样,那么为什么我能够在单独执行两个模块时成功构建,并且只有通过父模块,多模块pom.xml完成​​构建才会失败?下面的示例仅包含一个单轴2内核JAR,它捆绑在名为first-thirdparty的pom-first工件中.

而不是A,例子有keywoard first.文件夹结构如下:

./pom.xml
./first-thirdparty
    pom.xml
./first
    src/main/java/org/mydemo/Test.java // has …
Run Code Online (Sandbox Code Playgroud)

tycho maven

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

如何绘制JMS队列?

JMS队列是否有任何符号?我知道例如数据库,文件,类应该以相同的方式绘制,但是JMS元素呢?

java diagram jms

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

Maven程序集 - 从存档中提取时从子文件夹中复制文件

我对构建基础结构有一个非常具体的要求,即将另一个JAR依赖项的某些内容复制到我的Web应用程序的特定子文件夹中.我们正在使用maven-assembly-plugin,这样做的一个自然方法就是和它<dependencySet>一起使用<unpackOptions>.

代码示例(在程序集描述符中)我看起来如下:

    <dependencySet>
        <unpack>true</unpack>
        <scope>runtime</scope>
        <useProjectArtifact>false</useProjectArtifact>
        <includes>
            <include>my.group:artifact:jar</include>
        </includes>
        <unpackOptions>
            <includes>
                <include>subfolder/config.xml</include>
            </includes>
        </unpackOptions>
        <outputDirectory>WEB-INF/otherfolder</outputDirectory>
    </dependencySet>
Run Code Online (Sandbox Code Playgroud)

问题是我无法弄清楚如何指定我只想将一个文件复制artifact.jar/subfolder/config.xml到目标WEB-INF/otherfolder.实际结果是WEB-INF/otherfolder/subfolder/config.xml.如您所见,/subfolder将附加到最终路径.有没有办法更改<include>表达式,以便/subfolder不会附加?

提前致谢!

maven maven-assembly-plugin

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

Maven 程序集:从依赖项的特定子文件夹中复制

我正在使用 Maven 程序集插件来构建我们产品的 WAR(之前由 Ant 完成)。由于 Apache Ant 有许多遗留问题,因此有一个特定的要求可以使构建过程变得更容易:将依赖项的特定子文件夹(例如 jar 或 war 资源)复制到特定的目标子文件夹。

到目前为止,我了解到程序集描述符允许指定<outputDirectory>,但是有没有机会指定<sourceDirectory>?例如,我想将此规则应用于单个 WAR 或 JAR 类型依赖项。

考虑这个程序集描述符片段的示例(不是 100% 准确):

    <dependencySet>
        <unpack>true</unpack>
        <scope>runtime</scope>
        <useProjectArtifact>false</useProjectArtifact>
        <includes>
            <include>my-specific-dependency:war</include>
        </includes>
        <outputDirectory>WEB-INF/myresources</outputDirectory>
    </dependencySet>
Run Code Online (Sandbox Code Playgroud)

我想说我想将某些文件夹从 my-specific-dependency:war 复制到 WEB-INF/myresources。

编辑注意:我知道这不是一个非常正确的要求,因为我们不应该知道工件内部有什么,正确的方法是声明将整个工件提取到目标目录(简洁的声明方法)。

maven maven-assembly-plugin

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

为Web应用程序单点登录选择Kerberos(SPNEGO)Java库

我目前正致力于在我们的Java Web应用程序中实现企业身份验证机制,包括单点登录.Windows网络是我们的主要目标,而Kerberos听起来是一个合理的选择.旁注:据我所知,Web(HTTP)环境中用于SSO的协议是SPNEGO,它基本上是Kerberos的包装器.因此,听起来Kerberos HTTP SSO库实际上正在使用SPNEGO - 如果我错了,请纠正我.

当我开始调查这个话题时,我意识到没有明显的选择.让我列出那些:

  1. Spring安全性Kerberos/SPNEGO扩展.这是我第一次看到的(因为我们已经使用了Spring安全性),但几年前它似乎停留在v1.0.0的第二个里程碑.只有这个SO问题才能给它带来希望它可以用于生产.
  2. WAFFLE - Windows身份验证功能框架.似乎活跃且功能丰富.它可以作为通用servlet"插入",也可以作为Spring安全过滤器.
  3. SPNEGO SourceForge.看起来非常轻量级,提供HTTP Servlet过滤器,教程很容易遵循.

是否有任何特殊原因选择一种选择而不是另一种?周围还有其他选择吗?

java kerberos spnego single-sign-on

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

GSSException:[..]不支持/启用具有HMAC SHA1-96的加密类型AES256CTS模式

将我们的域用户设置为支持Kerberos令牌(Windows Server 2008R2)的AES加密后,在Web应用程序服务器端,我们会收到以下异常:

GSSException:GSS-API级别未指定失败(机制级别:不支持/启用HMAC SHA1-96的加密类型AES256CTS模式)

奇怪的是,我们有Java 6(1.6.0_27),这意味着应该支持AES,根据这个文档:http://docs.oracle.com/javase/6/docs/technotes/guides/security/jgss/jgss- 的features.html

我们的网络应用程序或Java或第三方缺少什么想法?我们正在使用Spring安全Kerberos扩展(使用最少的代码修改来适应我们当前的Spring 2.x版本和其他身份验证要求).

java kerberos aes

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

Kerberos:客户端票证中的 kvno 为“1”

我们正在为客户的 Web 应用程序配置 SSO,但不幸的是我们无权访问域控制器(这是我们不做更多实验来检查假设的又一个原因)。因此,我们要求运行ktpass.exe并准备.ktpass文件以用于我们的服务器配置。

我们面临的问题是“指定版本的密钥不可用”。

我查找了密钥表文件 (knvo = 5),并使用 Wireshark 在我们的 Web 服务器上检查了流量: 在此输入图像描述

如您所见,AP-REQ票证中的 kvno = 1。我认为这是检查 kvno 版本的正确方法。

我知道 Windows 2000 域存在兼容性问题(/kvno 1必须用于 Windows 2000 域兼容性),但据说我们要处理 Windows 2008R2 服务器(我可以看到msDS-Behavior-Version = 4我们的域控制器的值,它与 2008R2 匹配!)。

我们面临着类似W2K域模式的东西吗?

显式 kvno=1 有助于解决问题吗?IE,ktpass.exe [..] /kvno 1

编辑#1

问题在于错误指定的 SPN。它是 HTTP/computer_name@DOMAIN.COM,而不是使用完全限定的域名。这只有在启用 WINS 的情况下才有效,但事实证明并非如此。

使用正确的 SPN 生成密钥表后,一切正常,并且 kvno 根据实际帐户值发送。

请接受解释我观察到的效果的答案。

kerberos active-directory

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

包装/装饰GWT FileUpload

GWT FileUpload作为一个小部件产生,以便人们可以在表单提交期间上传文件(至少我是如何理解:) :)我想做的是使它看起来更好看并摆脱标准"浏览. .."按钮.

由于我没有良好的GWT经验(也没有JavaScript),我寻找现有的解决方案并找到了一个很好的项目 - gwtupload.这很好,但我意识到我喜欢拥有自己的微型版本(而且,我很好奇它是如何工作的).所以我浏览了代码并尝试提取魔法部分.我意识到使用了GWT FileInput,但是没有显示,并且按钮点击被委托给这个FileInput.在查看gwtupload的源代码后,我试图提取的代码(只有委托点击的部分)包含这个棘手的elem.click()JSNI:

class MyUpload extends Composite {
    private static native void clickOnInputFile(Element elem) /*-{
        elem.click();
    }-*/;

    public MyUpload() {
        final FileUpload upload = new FileUpload();
        AbsolutePanel container = new AbsolutePanel();
        // container.add(upload);
        Button btn = new Button("My Browse..");
        btn.addClickHandler(new ClickHandler() {
            @Override
            public void onClick(ClickEvent event) {
                clickOnInputFile(upload.getElement());
            }
        });
        container.add(btn);
        initWidget(container);
    }
}
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用:单击"我的浏览..."结果没有任何效果(以防万一我也尝试使用未注释的container.add(upload)行运行).能否请您帮助我理解此代码示例中的错误/缺失?

先感谢您.

PS我知道我必须将它放在FormPanel上,我知道如何在Servlet中执行实际的提交/处理; 我唯一想做的就是这种装饰.

javascript java gwt jsni

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

从GWT JSNI的内部函数调用Java方法

我正在使用W3C Geolocation API来检索GWT Web应用程序中的位置信息.Geolocation API的构建方式是一旦检索到位置位置就调用回调函数.

我目前的测试代码如下:

public native void getCoordinates() /*-{
    function onPositionUpdate(position) {
        var lat = position.coords.latitude;
        var lng = position.coords.longitude;
        var alt = position.coords.altitude;

        // not OK,- doesn't get invoked, and function execution stops at this point
        this.@com.test.GpsPanel::testMethod()();

        alert("Coordinates retrieved: " + lat + ";" + lng + ";" + alt);
    }

    function onPositionUpdateFailed(error) {
        alert("Some error");
    }

    if(navigator.geolocation) {
        // OK when invoked somewhere here
        this.@com.test.GpsPanel::testMethod()();

        navigator.geolocation.getCurrentPosition(onPositionUpdate, onPositionUpdateFailed);
    } else {
        alert("Geolocation is not available");
    }
}-*/; …
Run Code Online (Sandbox Code Playgroud)

java gwt jsni

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