在我正在工作的项目中,我们使用maven来管理依赖项.但是我们遇到了apache rampart的问题,它是Axis2的安全模块.我们尝试使用以下依赖项标记:
<dependency>
<groupId>org.apache.rampart</groupId>
<artifactId>rampart</artifactId>
<version>1.3</version>
<type>mar</type>
</dependency>
<dependency>
<groupId>org.apache.rampart</groupId>
<artifactId>rampart</artifactId>
<version>1.4</version>
<type>mar</type>
</dependency>
Run Code Online (Sandbox Code Playgroud)
发生的事情是,maven无法找到作为wallart pom文件中的依赖项包含的大量资源(请注意,maven会自动下载rampart pom文件,因此我不应该编辑这些文件).
当输入maven无法找到的rampart依赖项的URI时,我收到404错误.看起来apache的壁垒pom文件坏了......
有人成功地使用了与maven的垒垒吗?这是与maven破解的apache垒集合吗?
我正在尝试使用eclipse Galileo和Windows xp上的轴2 1.4从本地WSDL文件生成代理类.我的问题是由于WSDL中导入的模式而导致错误.困扰我的那条线是:
<xsd:import namespace="http://www.w3.org/2005/05/xmlmime" schemaLocation="http://www.w3.org/2005/05/xmlmime"/>
Run Code Online (Sandbox Code Playgroud)
我试过运行wsdl2java以下命令:
wsdl2java.bat -uri SOAService.wsdl -o D:\temp p test -d xmlbeans -a -s -ns2p -uw
Run Code Online (Sandbox Code Playgroud)
我得到以下异常:
Exception in thread "main" org.apache.axis2.wsdl.codegen.CodeGenerationException
: Error parsing WSDL
at org.apache.axis2.wsdl.codegen.CodeGenerationEngine.<init>(CodeGenerat
ionEngine.java:156)
at org.apache.axis2.wsdl.WSDL2Code.main(WSDL2Code.java:35)
at org.apache.axis2.wsdl.WSDL2Java.main(WSDL2Java.java:24)
Caused by: javax.wsdl.WSDLException: WSDLException (at /wsdl:definitions/wsdl:ty
pes/xsd:schema): faultCode=OTHER_ERROR: An error occurred trying to resolve sche
ma referenced at 'http://www.w3.org/2005/05/xmlmime', relative to 'file:/D:/Prog
rammi/axis2-1.4/bin/SOAService.wsdl'.: java.net.ConnectException: Connection tim
ed out: connect
at com.ibm.wsdl.xml.WSDLReaderImpl.parseSchema(Unknown Source)
at com.ibm.wsdl.xml.WSDLReaderImpl.parseSchema(Unknown Source)
at com.ibm.wsdl.xml.WSDLReaderImpl.parseTypes(Unknown Source)
at com.ibm.wsdl.xml.WSDLReaderImpl.parseDefinitions(Unknown Source)
at …Run Code Online (Sandbox Code Playgroud) 我们正在使用axis2来生成Web服务客户端(我现在后悔!).使用axis2命令行工具,您可以将switch -Euwc传递给Integer,将boolean传递给Boolean,以及生成的soruces等等.这是告诉axis2 可以使某些int或boolean值在模式中可以为空的一种方法.
我的问题是如何通过POM或Maven的其他方式设置此参数以实现与生成源相同的行为?我的stackoverflow和谷歌搜索没有太多揭示.有一个Jira问题,似乎被开发人员关闭而没有指向正确的方向.
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.futile.bizzareservice</groupId>
<artifactId>BizzareService</artifactId>
<version>2.0</version>
<name>BizzareService</name>
<properties>
<wsdl.location>unfortunate-wsdls</wsdl.location>
<axis2.version>1.5.4</axis2.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-wsdl2code-maven-plugin</artifactId>
<version>${axis2.version}</version>
<configuration>
<packageName>com.futile.bizzareservice.client</packageName>
<wsdlFile>${wsdl.location}/bizzareservice.wsdl</wsdlFile>
<language>java</language>
<databindingName>adb</databindingName>
<unpackClasses>true</unpackClasses>
</configuration>
<executions>
<execution>
<goals>
<goal>wsdl2code</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2</artifactId>
<version>${axis2.version}</version>
</dependency>
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-adb</artifactId>
<version>${axis2.version}</version>
</dependency>
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-adb-codegen</artifactId>
<version>${axis2.version}</version>
</dependency>
</dependencies>
</project>
Run Code Online (Sandbox Code Playgroud)
在配置中将unwrap设置为true无济于事,因为它们是一个不同的选项.我将来会避免使用axis2,但暂时我们会坚持使用它.
我有一个Web服务和他的客户端之间的安全性问题.我使用Axis2和Rampart构建自下而上的webservice,而不是从生成的wsdl创建客户端.我告诉你我的代码和具体问题.
Client.java
package de.security.tutorial;
import java.io.InputStream;
import java.rmi.RemoteException;
import javax.xml.stream.XMLStreamException;
import org.apache.axiom.om.impl.builder.StAXOMBuilder;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.context.ConfigurationContextFactory;
import org.apache.neethi.Policy;
import org.apache.neethi.PolicyEngine;
import org.apache.rampart.RampartMessageData;
import de.security.tutorial.ServerStub.GetWelcomeResponse;
public class Client {
/**
* Load policy file from classpath.
*/
private static Policy loadPolicy(String name) throws XMLStreamException {
ClassLoader loader = new ClassLoader() {};
InputStream resource = loader.getResourceAsStream(name);
StAXOMBuilder builder = new StAXOMBuilder(resource);
return PolicyEngine.getPolicy(builder.getDocumentElement());
}
public static void main(String[] arg) throws RemoteException{
String url = "http://localhost:8080/axis2/services/Server";
try {
// …Run Code Online (Sandbox Code Playgroud) 我花了很多天,试图找到一个可以连接到使用Negotiate/NTLM身份验证的Microsoft Dynamics CRM的正确Java框架.我使用各种HTTP协议处理程序,使用JAX-WS,Axis2,CXF尝试了Stackoverflow和其他资源上的所有现有建议.没有人像预期的那样工作.目前最好的方法是Axis2/commons-httpclient-3.1,我可以使用NTLM摘要跟踪至少所有三个阶段,但目标IIS仍然拒绝使用401 Unauthorized进行身份验证.阿帕奇CXF - 都与一个内置的Java6 NTLM支持和JCIFS,其中一些人建议的一种补救措施,也没有工作,要么因为前者未能在第二401响应(虽然它应该已经发送第三请求,根据协议),后者尝试从空输入流中读取响应代码并失败.
那么,问题是是否有人成功地从Java 6平台掌握了受NTLM保护的SOAP Web服务?
在Wikipedia中列出了许多符合WS-I Basic Profile(BP)的框架.但是,不清楚框架符合哪个版本的BP.所以我的问题如下:
哪些框架/产品(Java,.NET和其他)符合WS-I Basic Profile 2.0?
这个问题的答案可能对选择企业Web服务标准感兴趣.似乎大多数框架都符合BP 1.1,但问题是IT环境是否已准备好升级到BP 2.0(包括MTOM二进制附件,WS-Addressing,SOAP 1.2和UDDI 3).
研究一个示例框架,IBM WebSphere Message Broker(WMB),我发现了以下信息:
但是,我没有找到任何明确的声明,详细说明该产品支持WS-I Basic Profile Version 2.0.许多框架似乎也是如此......
我正在使用Eclipse Helios,并为在JBoss6.1上运行的Web应用程序添加了Axis2必需的库,当我启动服务器时,我看到以下错误日志。请帮助解决此问题。
WARN [org.jboss.detailed.classloader.ClassLoaderManager] Unexpected error during load of:org.w3c.dom.UserDataHandler: java.lang.LinkageError: loader constraint violation: loader (instance of org/jboss/classloader/spi/base/BaseClassLoader) previously initiated loading for a different type with name "org/w3c/dom/UserDataHandler"
at java.lang.ClassLoader.defineClass1(Native Method) [:1.6.0_27]
at java.lang.ClassLoader.defineClassCond(Unknown Source) [:1.6.0_27]
at java.lang.ClassLoader.defineClass(Unknown Source) [:1.6.0_27]
at org.jboss.classloader.spi.base.BaseClassLoader.access$200(BaseClassLoader.java:52) [jboss-classloader.jar:2.2.1.GA]
at org.jboss.classloader.spi.base.BaseClassLoader$2.run(BaseClassLoader.java:650) [jboss-classloader.jar:2.2.1.GA]
at org.jboss.classloader.spi.base.BaseClassLoader$2.run(BaseClassLoader.java:609) [jboss-classloader.jar:2.2.1.GA]
at java.security.AccessController.doPrivileged(Native Method) [:1.6.0_27]
Run Code Online (Sandbox Code Playgroud)
11:06:39,781 WARN [org.jboss.detailed.classloader.ClassLoaderManager] Unexpected error during load of:org.w3c.dom.DOMConfiguration: java.lang.LinkageError: loader constraint violation: loader (instance of org/jboss/classloader/spi/base/BaseClassLoader) previously initiated loading for a different type with name "org/w3c/dom/DOMConfiguration"
at …Run Code Online (Sandbox Code Playgroud) 我有一个Jar文件,我使用第三方库创建.当我打包jar文件时,我将几个xml文件包含在名为data的文件夹中
data
- file1.xml
- file2.xml
- file3.xml
Run Code Online (Sandbox Code Playgroud)
现在,我想读取jar文件中的文件夹,根据第三方库的文档,我可以获得类加载器,并像这样读取文件夹作为输入流.
ClassLoader clsLoader = myService.getClassLoader();
InputStream accountsStream = clsLoader.getResourceAsStream("data");
Run Code Online (Sandbox Code Playgroud)
问题是,如何列出输入流中的所有文件并逐个解析?
谢谢
编辑 补充信息:
How do I access resources that I put into my service or module archive file?
Run Code Online (Sandbox Code Playgroud)
http://axis.apache.org/axis2/java/core/faq.html#b1
对不起,这个问题应该是针对Apache Axis的,但如果它也是一个特定于Java的问题,我会感到困惑.
使用类加载器获取文件夹的输入流后,如何将所有文件列入该文件夹并逐个读取?
我的代码中的步骤将包括在内.
我正在为axis2 Web服务使用wsdl2java生成的Web服务客户端(axis2版本为1.6.1).因此,对于http连接,使用旧版本的commons-httpclient 3.1.在对我的Web服务客户端进行一些负载测试时.在某些情况下,我遇到了这个例外
org.apache.axis2.AxisFault: org.apache.axiom.ext.io.StreamCopyException: Error reading from source
at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
at com.ardic.arcsp.carbon.registry.ws.stub.WSStorageServiceStub.fromOM(WSStorageServiceStub.java:16706)
at com.ardic.arcsp.carbon.registry.ws.stub.WSStorageServiceStub.wSgetById(WSStorageServiceStub.java:6659)
at com.ardic.arcsp.update.wsclient.WSStorageServiceClient.getResourceById(WSStorageServiceClient.java:177)
at com.ardic.arcsp.update.wsclient.OTAUpdateTestServlet.downloadResource(OTAUpdateTestServlet.java:162)
at com.ardic.arcsp.update.wsclient.OTAUpdateTestServlet.doGet(OTAUpdateTestServlet.java:91)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at sun.reflect.GeneratedMethodAccessor30.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:273)
at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:270)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:305)
at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:165)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:298)
at org.apache.catalina.core.ApplicationFilterChain.access$000(ApplicationFilterChain.java:57)
at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:189)
at java.security.AccessController.doPrivileged(Native Method)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.wso2.carbon.server.CarbonStuckThreadDetectionValve.invoke(CarbonStuckThreadDetectionValve.java:154)
at org.wso2.carbon.server.TomcatServer$1.invoke(TomcatServer.java:254)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:399)
at org.apache.coyote.http11.Http11NioProcessor.process(Http11NioProcessor.java:396) …Run Code Online (Sandbox Code Playgroud) 我有一个XSD描述了一些复杂类型的序列,例如
<xs:complexType name="Catalog">
<xs:sequence>
<xs:element name="Category" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="ParentCategoryIDRef"/>
<xs:element type="xs:string" name="Method"/>
</xs:sequence>
<xs:complexType>
</xs:element>
</xs:sequence>
<xs:complexType>
Run Code Online (Sandbox Code Playgroud)
现在,当我使用JaxBs XJC将其转换为Java类时,它将java.util.List在我的Catalog类中生成一个字段和getter/setter Category.
但是,在使用java2wsdl的Axis2 Web服务中使用它需要的是Arrays之类的Category[].
我对JaxB绑定有点熟悉,并且已经尝试使用以下方法指定集合类型:
<jaxb:property collectionType="Category[]"/>
Run Code Online (Sandbox Code Playgroud)
导致代码无效,因为它仍然使用a java.util.List,但带有构造函数new Category[]<Category>.
当然,我总是可以在生成后编辑生成的代码,但是当我尝试重新生成代码时,这会导致问题.
我现在得到的是:
public class Catalog {
@XmlElement(name = "Category")
protected List<Category> category;
}
Run Code Online (Sandbox Code Playgroud)
我想要的是:
public class Catalog {
@XmlElement(name = "Category")
protected Category[] category;
}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?我目前正在使用XJC 2.2.6和Axis2 1.6.2.