论坛首页 Java企业应用论坛

自己动手写淘宝开放平台:Rop(将WebService REST进行到底!!)

浏览 99911 次
该帖已经被评为精华帖
作者 正文
   发表时间:2012-03-08  
sky_cn 写道
举手之劳而已,在eclipse上有m2插件支持用mvn比较方便,另外感觉单元测试和jetty插件集成也很方便

<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.9.5</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.5</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-xc</artifactId>
<version>1.9.5</version>
</dependency>

我改成这样才OK
0 请登录后投票
   发表时间:2012-03-09  
shenjc2008 写道
总是报这个警告:warning no match for this type name: within [Xlint:invalidAbsoluteTypeName]

2012-03-08 20:18:47,140  INFO [main] (AbstractHandlerMethodMapping.java:188) - Mapped "{[/sol],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public void com.rop.impl.AnnotationRopServiceRouter.test()
2012-03-08 20:18:47,141  INFO [main] (AbstractHandlerMethodMapping.java:188) - Mapped "{[/router],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public void com.rop.impl.AnnotationRopServiceRouter.service(org.springframework.web.context.request.WebRequest,javax.servlet.http.HttpServletResponse)

而且里面的没有一个值,不知道怎么回事

访问接口总是显示:

-<error solution="服务目前无法使用" message="服务不可用" code="1"> -<subErrors> -<subError> <code>isv.sample-user-add-service-unavailable</code> <message>调用后端服务sample.user.add抛异常,服务不可用</message> </subError> </subErrors> </error>


你服务应该没有部署成功吧
0 请登录后投票
   发表时间:2012-03-09  
wensen 写道
sky_cn 写道
举手之劳而已,在eclipse上有m2插件支持用mvn比较方便,另外感觉单元测试和jetty插件集成也很方便

<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.9.5</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.5</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-xc</artifactId>
<version>1.9.5</version>
</dependency>

我改成这样才OK

我把楼主的项目拆分成了3个工程,rop-framework,rop-biz,rop-war 在rop-framework我有如下

<dependency>
			<groupId>org.codehaus.jackson</groupId>
			<artifactId>jackson-all</artifactId>
			<version>1.9.5</version>
		</dependency>
 其实用jackson-all就行了,不需要那么多包
0 请登录后投票
   发表时间:2012-03-09   最后修改:2012-03-09
额。大家可以用用resteasy,感觉比lz这个更简单。
0 请登录后投票
   发表时间:2012-03-09  
sky_cn 写道
wensen 写道
sky_cn 写道
举手之劳而已,在eclipse上有m2插件支持用mvn比较方便,另外感觉单元测试和jetty插件集成也很方便

<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.9.5</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.5</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-xc</artifactId>
<version>1.9.5</version>
</dependency>

我改成这样才OK

我把楼主的项目拆分成了3个工程,rop-framework,rop-biz,rop-war 在rop-framework我有如下

 

<dependency>
			<groupId>org.codehaus.jackson</groupId>
			<artifactId>jackson-all</artifactId>
			<version>1.9.5</version>
		</dependency>
 其实用jackson-all就行了,不需要那么多包

 

在maven官方库貌似找不到jackson-all,所以我也只能这样配置:

<dependency>

<groupId>org.codehaus.jackson</groupId>

<artifactId>jackson-mapper-asl</artifactId>

<version>1.9.5</version>

</dependency>

<dependency>

<groupId>org.codehaus.jackson</groupId>

<artifactId>jackson-xc</artifactId>

<version>1.9.5</version>

</dependency>

0 请登录后投票
   发表时间:2012-03-09  
sky_cn 写道
shenjc2008 写道
总是报这个警告:warning no match for this type name: within [Xlint:invalidAbsoluteTypeName]

2012-03-08 20:18:47,140  INFO [main] (AbstractHandlerMethodMapping.java:188) - Mapped "{[/sol],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public void com.rop.impl.AnnotationRopServiceRouter.test()
2012-03-08 20:18:47,141  INFO [main] (AbstractHandlerMethodMapping.java:188) - Mapped "{[/router],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public void com.rop.impl.AnnotationRopServiceRouter.service(org.springframework.web.context.request.WebRequest,javax.servlet.http.HttpServletResponse)

而且里面的没有一个值,不知道怎么回事

访问接口总是显示:

-<error solution="服务目前无法使用" message="服务不可用" code="1"> -<subErrors> -<subError> <code>isv.sample-user-add-service-unavailable</code> <message>调用后端服务sample.user.add抛异常,服务不可用</message> </subError> </subErrors> </error>


你服务应该没有部署成功吧



搞清楚了,是我没传appKey等参数的缘故,只是楼主的代码还没判断是否有appKey等参数,所以并没有提示缺少appKey,看来楼主的代码还没写完...
0 请登录后投票
   发表时间:2012-03-09  
shenjc2008 写道
sky_cn 写道
wensen 写道
sky_cn 写道
举手之劳而已,在eclipse上有m2插件支持用mvn比较方便,另外感觉单元测试和jetty插件集成也很方便

<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.9.5</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.5</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-xc</artifactId>
<version>1.9.5</version>
</dependency>

我改成这样才OK

我把楼主的项目拆分成了3个工程,rop-framework,rop-biz,rop-war 在rop-framework我有如下

 

<dependency>
			<groupId>org.codehaus.jackson</groupId>
			<artifactId>jackson-all</artifactId>
			<version>1.9.5</version>
		</dependency>
 其实用jackson-all就行了,不需要那么多包

 

在maven官方库貌似找不到jackson-all,所以我也只能这样配置:

 

<dependency>

<groupId>org.codehaus.jackson</groupId>

<artifactId>jackson-mapper-asl</artifactId>

<version>1.9.5</version>

</dependency>

<dependency>

<groupId>org.codehaus.jackson</groupId>

<artifactId>jackson-xc</artifactId>

<version>1.9.5</version>

</dependency>

是的,所以改成那样,而且缺少了些楼主的test class。呵呵

0 请登录后投票
   发表时间:2012-03-09   最后修改:2012-03-09
在maven官方库貌似也找不到db2jcc-9.5.3,只好手工下载了一个db2jcc-9.5.jar,手工添加到maven的repository里面,才搞定。


请问请教各位大牛一个问题,基于Restful的web service的安全问题有什么好的解决方案?
0 请登录后投票
   发表时间:2012-03-09  
感觉对于传入空字符串的情况也应该归入“参数缺失”,
如场景:
一个表单,某字段没填写,此时应该提示“参数缺失”而不是“格式不对、非法值、越界等”;
所以认为这段代码:
INVALIDE_CONSTRAINT_SUBERROR_MAPPINGS.put("NotEmpty", SubErrorType.ISV_INVALID_PARAMETE);

应该改为
INVALIDE_CONSTRAINT_SUBERROR_MAPPINGS.put("NotEmpty", SubErrorType.ISV_MISSING_PARAMETER);

更加恰当些;
不知道大家怎么看?
0 请登录后投票
   发表时间:2012-03-14  
框架搭建的挺好。
个人觉得如下几个方面可有改进的地方

1. 和spring mvc框架绑定。
   很多基于Spring框架的web应用,并不采用spring mvc框架,因此就没有必要加载spring mvc相关的lib等。可以采用filter方式来替换spring mvc的拦截器。

2. Service的入口 url
可以增加相关的annotation, 采用struts2 的方式, 一个service 中的多个方法  采用url_method 方式 即是 url 对应servcie类,method 对应相关的方法,比如 CalculateService

@UrlMapping(“/operation/CalculateService”)
public class CalculateService{
@ServiceMethod(“add”)
public int add(int a, int b)….
@ServiceMothod(“multiply”)
Public int multiply(int a, int b)…

对应请求的url   /operation/CalculateService_add
or /operation/CalculateService_multiply


3. 开发人员功能扩展接口
比如像校验这样的功能,光靠annotation 是不够的,比如请求修改数据库记录的restful接口,校验应该包括数据是否在数据库中存在等等,因此应该能方便插入相关的功能。
   因此应该采用一些相关的设计模式,比如 责任链模式,在请求真正达到 restful servce之前,开发人员可以对request 或者 response进行相应的处理,也可以直接返回错误结果等。比如有个 IP 限定功能,那么开发人员提供一个 校验的handle, 如果不符合,择直接返回错误给 调用者,这样请求根本都不会到达真正的resutful service 中。
可以采用 axia2的链式处理,我觉得它能很好解决这样的问题

以上建议仅作参考
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics