Java Web服务是AXIS或CXF必需的?可以通过JDK(1.6)完成吗?
我对Web服务的工作方式比较陌生,所以我已经通过http://blog.saminda.org/2008/07/light-weight-osgi-based-axis2-powered.html 上的教程了解了这个教程. 打印你好的网络服务.
打印出你好的代码就在这里.在这里的同一个项目中,还有另一个将两个数字相加的Web服务.
要访问"hello"Web服务,我只需访问我的浏览器并转到http:// localhost:8080/bridge/services/Version/getVersion.
但是我如何为计算器网络服务做到这一点?什么是网址?或者我是否必须做一些额外的事情才能首先将其注册为服务?
Axis2支持使用AXIOM,JAXB,ADB和XMLBeans创建Web服务.我是Web服务开发领域的新手,想要使用Axis2创建Web服务.Web服务将非常简单,但我希望它能够经常更改.我觉得AXIOM很好,因为它允许您在service.xml文件中指定服务需求,然后相应地为您创建它.因此,我认为这将使我的生活变得更轻松,因为在我的Web服务中的任何更改我只需要通过.java类更改service.xml文件和一些代码来获取Web服务.但其他方法也各有优势.考虑到我的要求,您能告诉我在创建Web服务时应采用哪种方法吗?注意:我希望扩展对REST和SOAP Web服务的支持.
我的朋友要求解释一下Spring,axis2和Jersey之间的区别.在这里,我列出了一些我所知道的差异.如果您知道更多差异,请发表评论/回复
Spring webservices:
- 在web.xml中配置servlet的java Web应用程序(org.springframework.ws.transport.http.MessageDispatcherServlet).
- 您可以使用带弹簧注释的POJO来创建Web服务
- 支持基于RESTful和SOAP的Web服务.
- 由于它是一个Web应用程序,因此您可以使用http身份验证机制来实现安全性
Axis2的:
- webservice应用程序是一个将在axis2.war中部署的.aar文件
- 使用AXIOM为Web服务调用使用非基本类型参数
- 您可以使用JSR181注释来创建Web服务
- 您可以使用axis2扩展来使用弹簧依赖注入.
- 支持基于RESTful和SOAP的Web服务.
- 我想你必须使用ws-security实现来为你的web服务提供安全性>
- 他们声称Web服务的热部署工作,但我没有看到它的工作.
球衣号码:
- 具有在web.xml中配置的servlet的常规Web应用程序.
- 编写自定义消息读取器/写入器,以便将非原始类型参数用于Web服务调用
- 由于它是一个Web应用程序,因此您可以使用http身份验证机制来实现安全性
- 仅支持REST服务的RESTful实现
- 我看到热部署工作可能是因为它是一个Web应用程序,容器可以进行热部署
我们使用第三方的Web服务.每当他们像添加新元素一样更新XML模式时,我们都会收到以下错误消息.
"SAXException:无效的元素......"
AXIS中是否有任何方法可以在解析时跳过XML上收到的其他元素?
我之前使用AXIS生成了Web服务客户端,用于接收XML,如下所示
<Flight>
<AirlineCode>AB</AirlineCode>
</Flight>
Run Code Online (Sandbox Code Playgroud)
一切都很好.但现在我得到一个额外的标签作为回应.
<Flight>
<AirlineCode>AB</AirlineCode>
<OtherCode>XX</OtherCode>
</Flight>
Run Code Online (Sandbox Code Playgroud)
为此,我得到"无效元素"例外.
谢谢
我创建Axis2了一个maven项目的Web服务ProjectB并将其打包为ProjectBjar.我将此jar作为依赖项添加到ProjectApom.xml中的另一个maven项目.
我ProjectB添加的jar文件作为依赖项ProjectA pom.xml.
<dependency>
<groupId>axis2</groupId>
<artifactId>Axis2WebService</artifactId>
<version>0.1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
在我添加到另一个项目的Web服务jar中不包含Webcontent文件夹.所以,我担心的是
如何在jar中调用我的web服务ProjectA?
我需要在我添加任何东西web.xml的ProjectA,以便找到我的web服务?
如何在浏览器中访问我的Web服务(即http://localserver:port/ProjectA/Myservice).这是访问我的Web服务的正确方法吗?
我是否需要projectA在ProjectAweb.xml 中的pom.xml或Axis 2 servlet映射中再次指定所有与axis2相关的jar ?
我对此感到震惊了一天.有人可以帮帮我吗?
我已经被分配了一项工作来调查并提出修复一个间歇性和(显然)不可复制的错误,导致Web服务调用失败并出现以下错误:
Message does not conform to configured policy [ TimestampPolicy(S) AuthenticationTokenPolicy(S) ]: No Security Header found
Run Code Online (Sandbox Code Playgroud)
该应用程序是面向高流量网站的在线公众的基于Spring的后端.使用Axis2 1.4客户端访问Web服务.
我认为我已经设法将问题跟踪到可能的并发问题,但它似乎并没有完全依赖于负载,故障统计数据不支持它(有时候负载较低的天数比高负载天数更差)加载).
无论如何,Web服务的所有客户端代码都包含在带有@Repository注释的单个类中.需要访问此WebServiceClient类的更广泛的应用程序中的类使用@Resource注释在类作用域中声明它,并根据需要自动装入.
我看到的问题是,在WebServiceClient中,存根在类范围内声明如下:
private ValidationStub validationStub;
private CustInfoStub custInfoStub;
Run Code Online (Sandbox Code Playgroud)
并在调用Web服务时在方法范围中初始化
this.validationStub= new ValidationStub (this.url);
prepareStub(this.validationPort, username, password);
Run Code Online (Sandbox Code Playgroud)
其中prepareStub方法创建安全标头并将其添加如下:
stub._getServiceClient().addHeader(element);
Run Code Online (Sandbox Code Playgroud)
我想如果我将存根从类范围移动到方法范围,它将解决问题,如下所示:
ValidationStub validationStub = new ValidationStub(this.url);
Run Code Online (Sandbox Code Playgroud)
有没有人遇到过类似的问题?我有点担心做出这种改变会对性能产生影响.
当我尝试访问部署了Axis2 Web应用程序的URL上的" 服务,验证和管理"链接时http://localhost:82/SOAPDemo/,它会出现以下错误:
Servlet.init() for servlet AxisServlet threw exception
在后端,虽然在eclipse中启动了apache tomcat 7,但它向我显示了以下警告:
[WARN] Unable to instantiate deployer org.apache.axis2.deployment.ServiceDeployer;
我正在使用一个Web服务,它在SOAP信封头中放置一个身份验证令牌.看来(通过查看WS WSDL附带的示例),如果在.NET中生成存根,则此标头信息通过存根类中的成员变量公开.但是,当我使用WSDL2Java生成Axis2 java存根时,它似乎不会在任何地方暴露.
从SOAP信封标题中提取此信息的正确方法是什么?
WSDL: http ://www.vbar.com/zangelo/SecurityService.wsdl
C#示例:
using System;
using SignInSample.Security; // web service
using SignInSample.Document; // web service
namespace SignInSample
{
class SignInSampleClass
{
[STAThread]
static void Main(string[] args)
{
// login to the Vault and set up the document service
SecurityService secSvc = new SecurityService();
secSvc.Url = "http://localhost/AutodeskDM/Services/SecurityService.asmx";
secSvc.SecurityHeaderValue = new SignInSample.Security.SecurityHeader();
secSvc.SignIn("Administrator", "", "Vault");
DocumentServiceWse docSvc = new DocumentServiceWse();
docSvc.Url = "http://localhost/AutodeskDM/Services/DocumentService.asmx";
docSvc.SecurityHeaderValue = new SignInSample.Document.SecurityHeader();
docSvc.SecurityHeaderValue.Ticket = secSvc.SecurityHeaderValue.Ticket;
docSvc.SecurityHeaderValue.UserId = secSvc.SecurityHeaderValue.UserId;
}
}
} …Run Code Online (Sandbox Code Playgroud) 在Axis2中部署JAX-WS服务时是否可以指定安全策略断言?到目前为止,我发现只有一种方法是全局配置策略(即在axis2.xml中).但它可以在JAXWS JAR中完成吗?